Décalage progressif de la colonne de texte pour les pavés dos carrés collés : comment faire ?

Bonsoir, la liste,

Je viens d’achever la composition d’un pavé de 900 pages, de loin
« mon » plus gros livre à ce ce jour. Vu qu’il s’agira d’un dos carré
collé, il faut tenir compte de la surface importante de papier
« disparaissant » dans la reliure. Il est d’usage de prévoir un décalage
du rectangle d’empagement vers l’extérieur afin que, même au milieu du
livre, les fins de ligne restent lisibles. Ce décalage est proportionnel
notamment au nombre de pages du livre. Dans le cas présent, il serait
donc très important. Trop…

Le principal problème est en effet qu’il s’agit d’une valeur fixe : plus
on sera loin du milieu du livre, plus l’empagement paraîtra laid et
inadapté, avec une colonne de texte inutilement déportée vers
l’extérieur (marge interne bien trop grande, marge externe bien trop
petite). En toute logique, le décalage devrait être progressif :
augmenter petit à petit à mesure que l’on approche du milieu du livre,
décroître d’autant à mesure qu’on s’en éloigne.

J’ai cru comprendre en lisant le site d’Alain Hurtig (https://
L’Outil - Méthodes d’empagement) qu’autrefois les
imprimeurs s’en chargeaient durant un procédé appelé l’imposition
(disposer les pages dans le bon ordre sur les feuilles, avant pliage et
découpage pour que les pages du livre apparaissent ensuite dans
l’ordre). À l’évidence, ce n’est plus le cas, du moins pour les petits
tirages et les impressions à la demande.

J’ai pensé pouvoir le faire avec les extensions atbegshi et changepage :
en incluant dans un \AtBeginShipout une commande \changeblock (modifiant
les marges en cours de route). Échec complet.

En testant cette commande \changeblock dans le texte courant, j’ai
constaté qu’elle fonctionnait normalement avant \chapter, mais pas
après. Je me suis alors rappelé que TeX compose le texte courant comme
une suite de paragraphes. Ces derniers ayant pour déplorable habitude
d’enjamber les pages, j’ai supposé qu’un mécanisme interne devait
empêcher toute modification de la mise en pages avant un saut de page.

Est-ce bien le cas ? Si oui, mon idée de décalage progressif semble
compromise : la variation du décalage de chapitre en chapitre plutôt que
page à page ne me semble quant à elle pas souhaitable, car pour un long
chapitre, cette variation pourrait être suffisamment brutale pour être
perceptible. Je n’ai en outre évidemment pas l’intention d’insérer
manuellement en bas de chaque page impaire environ 450 \clearpage
redéfinis pour inclure un \changeblock…

Bref, y aurait-il à votre avis un moyen malgré tout d’automatiser tout
cela ? La solution à laquelle je pensais était de repérer le dernier
caractère du texte courant pour chaque page, de le faire suivre de
quelque chose comme \parfillskip0pt\par\changeblock{…}
\clearpage\begingroup\noindent<SUITE DU PARAGRAPHE QUAND ELLE EXISTE>.

Bien sûr, je n’ai aucune idée sur la façon de mettre cela en place. Et
je suppose que ce ne serait possible qu’avec LuaTeX.

Des idées ?

À toutes fins utiles (?), je joins un MNWE (minimal non working example).

Merci d’avance.

Thomas Savary
1 le Grand-Plessis
F-85340 L’Île-d’Olonne
Tél. Tél. masqué

Bonjour Thomas,

Je crois comprendre que tu veux imprimer 4 pages A5 sur un A4 recto-verso.

pdfpages permet de faire l’imposition « comme un imprimeur », si tu veux
imprimer 4 pages A5 sur du A4 (ou 64 pages A5 sur du A0) et coller
ensuite les feuillets A4 coupés en deux et pliés c’est peut-être une piste.

Sinon, pour ton décalage progressif, je ne vois pas…

Bonne journée,

Daniel Flipo

Bonjour,

Votre approche est tout à fait bonne, mais comme souvent, les latexeries qui servent à masquer les commandes de bases de TeX, en l’occurrence \addtolength utilisé par \changetext, obscurcissent le fonctionnement du code plutôt qu’elles ne le clarifient. Le problème ici est que les longueurs altérées par \changetext ne sont pas redéfinies de manière globale : pourquoi, je ne saurais le dire, mais on peut résoudre ce problème en n’utilisant que des commandes TeX de base dans \DecalageBloc, comme vous le verrez en pièce jointe. (Je suppose qu’il faudrait aussi redéfinir \decalagereliure dans cet exemple.)

À ma connaissance, le problème avec les paragraphes répartis entre deux pages est que quand TeX décide de couper le paragraphe, il a déjà lu la suite du paragraphe. Si la partie du paragraphe gardée en réserve pour la page suivante contient des macros qui utilisent des données définies par l’output routine (comme le compteur de pages), la valeur de ces données ne correspondra pas à la page où finit le paragraphe, mais à celle où il commence. En l’occurrence, comme toutes vos instructions se passent dans l’output routine et pas dans les paragraphes, il n’y a pas de problème à ce niveau.

J’en ai profité pour supprimer la plupart des %. Ils ne sont utiles que lorsque TeX est en mode horizontal, en général à l’intérieur d’un paragraphe, quand le dernier token de la ligne est un caractère (plutôt qu’un nom de macro par exemple).

Bon week-end,

Bastien Dumont

Le Friday 13 December 2024 à 07:39:30PM, Thomas Savary a écrit :

Bonsoir, la liste,

Je viens d’achever la composition d’un pavé de 900 pages, de loin
« mon » plus gros livre à ce ce jour. Vu qu’il s’agira d’un dos carré
collé, il faut tenir compte de la surface importante de papier
« disparaissant » dans la reliure. Il est d’usage de prévoir un décalage
du rectangle d’empagement vers l’extérieur afin que, même au milieu du
livre, les fins de ligne restent lisibles. Ce décalage est proportionnel
notamment au nombre de pages du livre. Dans le cas présent, il serait
donc très important. Trop…

Le principal problème est en effet qu’il s’agit d’une valeur fixe : plus
on sera loin du milieu du livre, plus l’empagement paraîtra laid et
inadapté, avec une colonne de texte inutilement déportée vers
l’extérieur (marge interne bien trop grande, marge externe bien trop
petite). En toute logique, le décalage devrait être progressif :
augmenter petit à petit à mesure que l’on approche du milieu du livre,
décroître d’autant à mesure qu’on s’en éloigne.

J’ai cru comprendre en lisant le site d’Alain Hurtig (https://
L’Outil - Méthodes d’empagement) qu’autrefois les
imprimeurs s’en chargeaient durant un procédé appelé l’imposition
(disposer les pages dans le bon ordre sur les feuilles, avant pliage et
découpage pour que les pages du livre apparaissent ensuite dans
l’ordre). À l’évidence, ce n’est plus le cas, du moins pour les petits
tirages et les impressions à la demande.

J’ai pensé pouvoir le faire avec les extensions atbegshi et changepage :
en incluant dans un \AtBeginShipout une commande \changeblock (modifiant
les marges en cours de route). Échec complet.

En testant cette commande \changeblock dans le texte courant, j’ai
constaté qu’elle fonctionnait normalement avant \chapter, mais pas
après. Je me suis alors rappelé que TeX compose le texte courant comme
une suite de paragraphes. Ces derniers ayant pour déplorable habitude
d’enjamber les pages, j’ai supposé qu’un mécanisme interne devait
empêcher toute modification de la mise en pages avant un saut de page.

Est-ce bien le cas ? Si oui, mon idée de décalage progressif semble
compromise : la variation du décalage de chapitre en chapitre plutôt que
page à page ne me semble quant à elle pas souhaitable, car pour un long
chapitre, cette variation pourrait être suffisamment brutale pour être
perceptible. Je n’ai en outre évidemment pas l’intention d’insérer
manuellement en bas de chaque page impaire environ 450 \clearpage
redéfinis pour inclure un \changeblock…

Bref, y aurait-il à votre avis un moyen malgré tout d’automatiser tout
cela ? La solution à laquelle je pensais était de repérer le dernier
caractère du texte courant pour chaque page, de le faire suivre de
quelque chose comme \parfillskip0pt\par\changeblock{…}
\clearpage\begingroup\noindent<SUITE DU PARAGRAPHE QUAND ELLE EXISTE>.

Bien sûr, je n’ai aucune idée sur la façon de mettre cela en place. Et
je suppose que ce ne serait possible qu’avec LuaTeX.

Des idées ?

À toutes fins utiles (?), je joins un MNWE (minimal non working example).

Merci d’avance.

Thomas Savary
1 le Grand-Plessis
F-85340 L’Île-d’Olonne
Tél. Tél. masqué
https://compo85.fr/

\documentclass[a5paper, 11pt, latin]{memoir}

% EXEMPLE MINIMAL NON FONCTIONNEL :slight_smile:

% L’idée est, pour chaque nouvelle double page, d’augmenter
% le petit fond (marge interne) et de réduire de la même valeur
% le grand fond (marge externe) pour décaler progressivement le bloc de
% texte à mesure qu’on approche des pages centrales ; passé le milieu du
% livre, le décalage varierait en sens inverse.
% Le décalage est bien sûr le même, à gauche et à droite, pour chaque double page
% considérée.

\usepackage{babel, calc, ifthen, lipsum}

\usepackage{atbegshi}
\usepackage{changepage}

\newlength{\decalagereliure}
\setlength{\decalagereliure}{.36mm} % valeur calculée pour un livre de 900 pages

\newcommand{\DecalageBloc}{%
\ifthenelse{\value{page}<450}% si avant la moitié du livre
{\changetext{0pt}{0pt}{-\decalagereliure}{\decalagereliure}{}}% Réduire grand fond, augmenter petit fond
{\changetext{0pt}{0pt}{\decalagereliure}{-\decalagereliure}{}}% Augmenter grand fond, réduire petit fond
}%

\AtBeginShipout{%
\checkoddpage%
\ifoddpage% si page impaire appliquer le décalage, prenant effet à la p. suiv.
\DecalageBloc%
\fi%
}

\begin{document}
% Pourquoi faire court ?
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\end{document}

Thomas Savary wrote:

J’ai pensé pouvoir le faire avec les extensions atbegshi et changepage
: en incluant dans un \AtBeginShipout une commande \changeblock
(modifiant les marges en cours de route). Échec complet.

Salut Thomas !

Le problème est que les commandes de modification de l’empagement sont
exécutés dans (au moins) un « groupe » TeX et n’ont pas une portée
globale: dès qu’on sort du groupe en question, les valeurs précédentes
sont automatiquement restaurées et par conséquent tes modifications
n’ont aucun effet.

Voici en attachement une solution plus simple et plus portable (moins de
packages) et qui marche (je crois ;-)). Note l’utilisation de \global
pour éviter les problèmes de scoping. J’ai utilisé l’option twoside
puisque c’est pour du recto-verso, et je modifie directement
\oddsidemargin et \evensidemargin, ce qui suffit pour cet exemple
minimal.

Note aussi l’utilisation d’un « hook » natif d’un noyau LaTeX
suffisament récent.

Enfin, mais c’est anecdotique, j’ai divisé par 10 ta valeur de décalage
pour qu’il reste quelque chose à lire sur les pages 450 et 451 :-D.

J’espère que ça t’aide !

P.-S. : Je me rends compte que je me suis mal exprimé sur la cause du problème. Il est normal qu’\addtolength ne redéfinisse pas les longueurs globalement. Or, le code de l’output routine est toujours exécuté dans un groupe. Par conséquent, l’altération des longueurs est bien effectuée à chaque fois, mais elle est oublié sitôt qu’on passe à la page suivante, si bien que la marge extérieure a pour toutes les pages la valeur de départ moins \decalagereliure. Ce que je ne comprends pas, c’est comment on pourrait faire en sorte que \changetext ou \addtolength redéfinissent globalement. Heureusement, on peut tout aussi bien se passer de ces macros et utiliser \global avec les commandes de base de TeX.

Le Saturday 14 December 2024 à 12:47:01PM, Bastien DUMONT a écrit :

Bonjour,

Votre approche est tout à fait bonne, mais comme souvent, les latexeries qui servent à masquer les commandes de bases de TeX, en l’occurrence \addtolength utilisé par \changetext, obscurcissent le fonctionnement du code plutôt qu’elles ne le clarifient. Le problème ici est que les longueurs altérées par \changetext ne sont pas redéfinies de manière globale : pourquoi, je ne saurais le dire, mais on peut résoudre ce problème en n’utilisant que des commandes TeX de base dans \DecalageBloc, comme vous le verrez en pièce jointe. (Je suppose qu’il faudrait aussi redéfinir \decalagereliure dans cet exemple.)

À ma connaissance, le problème avec les paragraphes répartis entre deux pages est que quand TeX décide de couper le paragraphe, il a déjà lu la suite du paragraphe. Si la partie du paragraphe gardée en réserve pour la page suivante contient des macros qui utilisent des données définies par l’output routine (comme le compteur de pages), la valeur de ces données ne correspondra pas à la page où finit le paragraphe, mais à celle où il commence. En l’occurrence, comme toutes vos instructions se passent dans l’output routine et pas dans les paragraphes, il n’y a pas de problème à ce niveau.

J’en ai profité pour supprimer la plupart des %. Ils ne sont utiles que lorsque TeX est en mode horizontal, en général à l’intérieur d’un paragraphe, quand le dernier token de la ligne est un caractère (plutôt qu’un nom de macro par exemple).

Bon week-end,

Bastien Dumont

Le Friday 13 December 2024 à 07:39:30PM, Thomas Savary a écrit :

Bonsoir, la liste,

Je viens d’achever la composition d’un pavé de 900 pages, de loin
« mon » plus gros livre à ce ce jour. Vu qu’il s’agira d’un dos carré
collé, il faut tenir compte de la surface importante de papier
« disparaissant » dans la reliure. Il est d’usage de prévoir un décalage
du rectangle d’empagement vers l’extérieur afin que, même au milieu du
livre, les fins de ligne restent lisibles. Ce décalage est proportionnel
notamment au nombre de pages du livre. Dans le cas présent, il serait
donc très important. Trop…

Le principal problème est en effet qu’il s’agit d’une valeur fixe : plus
on sera loin du milieu du livre, plus l’empagement paraîtra laid et
inadapté, avec une colonne de texte inutilement déportée vers
l’extérieur (marge interne bien trop grande, marge externe bien trop
petite). En toute logique, le décalage devrait être progressif :
augmenter petit à petit à mesure que l’on approche du milieu du livre,
décroître d’autant à mesure qu’on s’en éloigne.

J’ai cru comprendre en lisant le site d’Alain Hurtig (https://
L’Outil - Méthodes d’empagement) qu’autrefois les
imprimeurs s’en chargeaient durant un procédé appelé l’imposition
(disposer les pages dans le bon ordre sur les feuilles, avant pliage et
découpage pour que les pages du livre apparaissent ensuite dans
l’ordre). À l’évidence, ce n’est plus le cas, du moins pour les petits
tirages et les impressions à la demande.

J’ai pensé pouvoir le faire avec les extensions atbegshi et changepage :
en incluant dans un \AtBeginShipout une commande \changeblock (modifiant
les marges en cours de route). Échec complet.

En testant cette commande \changeblock dans le texte courant, j’ai
constaté qu’elle fonctionnait normalement avant \chapter, mais pas
après. Je me suis alors rappelé que TeX compose le texte courant comme
une suite de paragraphes. Ces derniers ayant pour déplorable habitude
d’enjamber les pages, j’ai supposé qu’un mécanisme interne devait
empêcher toute modification de la mise en pages avant un saut de page.

Est-ce bien le cas ? Si oui, mon idée de décalage progressif semble
compromise : la variation du décalage de chapitre en chapitre plutôt que
page à page ne me semble quant à elle pas souhaitable, car pour un long
chapitre, cette variation pourrait être suffisamment brutale pour être
perceptible. Je n’ai en outre évidemment pas l’intention d’insérer
manuellement en bas de chaque page impaire environ 450 \clearpage
redéfinis pour inclure un \changeblock…

Bref, y aurait-il à votre avis un moyen malgré tout d’automatiser tout
cela ? La solution à laquelle je pensais était de repérer le dernier
caractère du texte courant pour chaque page, de le faire suivre de
quelque chose comme \parfillskip0pt\par\changeblock{…}
\clearpage\begingroup\noindent<SUITE DU PARAGRAPHE QUAND ELLE EXISTE>.

Bien sûr, je n’ai aucune idée sur la façon de mettre cela en place. Et
je suppose que ce ne serait possible qu’avec LuaTeX.

Des idées ?

À toutes fins utiles (?), je joins un MNWE (minimal non working example).

Merci d’avance.

Thomas Savary
1 le Grand-Plessis
F-85340 L’Île-d’Olonne
Tél. Tél. masqué
https://compo85.fr/

\documentclass[a5paper, 11pt, latin]{memoir}

% EXEMPLE MINIMAL NON FONCTIONNEL :slight_smile:

% L’idée est, pour chaque nouvelle double page, d’augmenter
% le petit fond (marge interne) et de réduire de la même valeur
% le grand fond (marge externe) pour décaler progressivement le bloc de
% texte à mesure qu’on approche des pages centrales ; passé le milieu du
% livre, le décalage varierait en sens inverse.
% Le décalage est bien sûr le même, à gauche et à droite, pour chaque double page
% considérée.

\usepackage{babel, calc, ifthen, lipsum}

\usepackage{atbegshi}
\usepackage{changepage}

\newlength{\decalagereliure}
\setlength{\decalagereliure}{.36mm} % valeur calculée pour un livre de 900 pages

\newcommand{\DecalageBloc}{%
\ifthenelse{\value{page}<450}% si avant la moitié du livre
{\changetext{0pt}{0pt}{-\decalagereliure}{\decalagereliure}{}}% Réduire grand fond, augmenter petit fond
{\changetext{0pt}{0pt}{\decalagereliure}{-\decalagereliure}{}}% Augmenter grand fond, réduire petit fond
}%

\AtBeginShipout{%
\checkoddpage%
\ifoddpage% si page impaire appliquer le décalage, prenant effet à la p. suiv.
\DecalageBloc%
\fi%
}

\begin{document}
% Pourquoi faire court ?
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\lipsum[1-150]%
\end{document}

Bonsoir, la liste,

Un grand merci, Daniel, Bastien, Didier, pour vos réponses, en
particulier pour les explications TeXniques — il faudra vraiment qu’un
jour je me mette sérieusement à l’apprentissage du langage TeX.

Daniel, merci de m’avoir signalé pdfpages pour l’imposition. Jusqu’à
présent, j’ai toujours laissé ce soin aux imprimeurs, mais ça pourrait
servir, à l’occasion — je n’évoquais en fait le sujet que parce que,
autrefois, si je comprends bien Alain Hurtig, les imprimeurs
s’occupaient de la correction des petits et grands fonds lors de
l’imposition. Ce qui est sûr, c’est qu’aujourd’hui ils ne le font plus,
au moins la plupart.

Bastien, merci d’avoir ainsi éclairé ma lanterne. S’agissant des « % »,
ayant déjà eu des mauvaises surprises faute d’en avoir ajouté un en fin
de ligne dans des définitions de commande, j’ai pris l’habitude d’en
ajouter systématiquement sans me poser de questions, et c’est devenu un
réflexe. Mais j’essaierai d’y penser à l’avenir :slight_smile: Votre solution
fonctionne parfaitement — je me suis en effet trompé dans le décalage :
simple erreur de saisie avec l’oubli d’un zéro. Pour information, ce
décalage ne dépend pas seulement du nombre de pages, mais aussi du
grammage du papier et de sa main (une unité qui en mesure la rigidité) :
ces trois paramètres déterminent l’épaisseur du bloc de pages, qui
permet ensuite de calculer la surface de papier « disparaissant » dans
la reliure lorsqu’on évite du moins de « casser » le dos du livre.

Didier, merci aussi pour ta solution encore plus élégante, ne
nécessitant pas atbegshi. Il a fallu que je l’adapte à la classe memoir
pour le livre en question, car ça ne marchait pas en l’état. En effet,
lorsqu’on définit des dimensions de feuille en plus de celles de la page
(pour avoir des fonds perdus et traits de coupe, par exemple), memoir
définit des longueurs supplémentaires comme \spinemargin et \foremargin,
comme je m’en suis rendu compte en parcourant (laborieusement) le source
de la classe.

J’ai d’abord voulu remplacer \oddsidemargin et \evensidemargin par ces
longueurs, mais sans succès. Il faut apparemment d’abord intervenir sur
ces premières puis ajouter :
\global\spinemargin=\oddsidemargin\relax
\global\foremargin=\evensidemargin\relax

En tout cas, comme cela, cela fonctionne pour le livre que je traite. Je
ne vais pas tarder à améliorer tout ça avec Lua pour les calculs — cela
m’évitera d’oublier un zéro, par exemple :slight_smile:

Merci, Bastien et Didier, vous m’avez sauvé !

Thomas Savary
1 le Grand-Plessis
F-85340 L’Île-d’Olonne
Tél. Tél. masqué

Le samedi 14 décembre 2024, 14:08:25 CET Didier Verna a écrit :

Thomas Savary wrote:

J’ai pensé pouvoir le faire avec les extensions atbegshi et
changepage>
: en incluant dans un \AtBeginShipout une commande \changeblock

(modifiant les marges en cours de route). Échec complet.

Salut Thomas !

Le problème est que les commandes de modification de l’empagement sont
exécutés dans (au moins) un « groupe » TeX et n’ont pas une portée
globale: dès qu’on sort du groupe en question, les valeurs
précédentes sont automatiquement restaurées et par conséquent tes
modifications n’ont aucun effet.

Voici en attachement une solution plus simple et plus portable (moins
de packages) et qui marche (je crois ;-)). Note l’utilisation de
\global pour éviter les problèmes de scoping. J’ai utilisé l’option
twoside puisque c’est pour du recto-verso, et je modifie directement
\oddsidemargin et \evensidemargin, ce qui suffit pour cet exemple
minimal.

Note aussi l’utilisation d’un « hook » natif d’un noyau LaTeX
suffisament récent.

Enfin, mais c’est anecdotique, j’ai divisé par 10 ta valeur de
décalage pour qu’il reste quelque chose à lire sur les pages 450 et
451 :-D.

J’espère que ça t’aide !

Bonsoir,

J’ai synthétisé nos échanges sur cette page (qui traite aussi d’autres questions) : Comment modifier des marges en cours de document ? — FAQ <span class="t-logo">L<span class="a">a</span>T<span class="e">e</span>X</span> GUTenberg

N’hésitez pas à faire des remarques ici ou à intervenir directement sur la FAQ.

Bonne reprise de semaine,

Bastien

Le Saturday 14 December 2024 à 11:44:51PM, Thomas Savary a écrit :

Bonsoir, la liste,

Un grand merci, Daniel, Bastien, Didier, pour vos réponses, en
particulier pour les explications TeXniques — il faudra vraiment qu’un
jour je me mette sérieusement à l’apprentissage du langage TeX.

Daniel, merci de m’avoir signalé pdfpages pour l’imposition. Jusqu’à
présent, j’ai toujours laissé ce soin aux imprimeurs, mais ça pourrait
servir, à l’occasion — je n’évoquais en fait le sujet que parce que,
autrefois, si je comprends bien Alain Hurtig, les imprimeurs
s’occupaient de la correction des petits et grands fonds lors de
l’imposition. Ce qui est sûr, c’est qu’aujourd’hui ils ne le font plus,
au moins la plupart.

Bastien, merci d’avoir ainsi éclairé ma lanterne. S’agissant des « % »,
ayant déjà eu des mauvaises surprises faute d’en avoir ajouté un en fin
de ligne dans des définitions de commande, j’ai pris l’habitude d’en
ajouter systématiquement sans me poser de questions, et c’est devenu un
réflexe. Mais j’essaierai d’y penser à l’avenir :slight_smile: Votre solution
fonctionne parfaitement — je me suis en effet trompé dans le décalage :
simple erreur de saisie avec l’oubli d’un zéro. Pour information, ce
décalage ne dépend pas seulement du nombre de pages, mais aussi du
grammage du papier et de sa main (une unité qui en mesure la rigidité) :
ces trois paramètres déterminent l’épaisseur du bloc de pages, qui
permet ensuite de calculer la surface de papier « disparaissant » dans
la reliure lorsqu’on évite du moins de « casser » le dos du livre.

Didier, merci aussi pour ta solution encore plus élégante, ne
nécessitant pas atbegshi. Il a fallu que je l’adapte à la classe memoir
pour le livre en question, car ça ne marchait pas en l’état. En effet,
lorsqu’on définit des dimensions de feuille en plus de celles de la page
(pour avoir des fonds perdus et traits de coupe, par exemple), memoir
définit des longueurs supplémentaires comme \spinemargin et \foremargin,
comme je m’en suis rendu compte en parcourant (laborieusement) le source
de la classe.

J’ai d’abord voulu remplacer \oddsidemargin et \evensidemargin par ces
longueurs, mais sans succès. Il faut apparemment d’abord intervenir sur
ces premières puis ajouter :
\global\spinemargin=\oddsidemargin\relax
\global\foremargin=\evensidemargin\relax

En tout cas, comme cela, cela fonctionne pour le livre que je traite. Je
ne vais pas tarder à améliorer tout ça avec Lua pour les calculs — cela
m’évitera d’oublier un zéro, par exemple :slight_smile:

Merci, Bastien et Didier, vous m’avez sauvé !

Thomas Savary
1 le Grand-Plessis
F-85340 L’Île-d’Olonne
Tél. Tél. masqué
https://compo85.fr/
Le samedi 14 décembre 2024, 14:08:25 CET Didier Verna a écrit :

Thomas Savary wrote:

J’ai pensé pouvoir le faire avec les extensions atbegshi et
changepage>
: en incluant dans un \AtBeginShipout une commande \changeblock

(modifiant les marges en cours de route). Échec complet.

Salut Thomas !

Le problème est que les commandes de modification de l’empagement sont
exécutés dans (au moins) un « groupe » TeX et n’ont pas une portée
globale: dès qu’on sort du groupe en question, les valeurs
précédentes sont automatiquement restaurées et par conséquent tes
modifications n’ont aucun effet.

Voici en attachement une solution plus simple et plus portable (moins
de packages) et qui marche (je crois ;-)). Note l’utilisation de
\global pour éviter les problèmes de scoping. J’ai utilisé l’option
twoside puisque c’est pour du recto-verso, et je modifie directement
\oddsidemargin et \evensidemargin, ce qui suffit pour cet exemple
minimal.

Note aussi l’utilisation d’un « hook » natif d’un noyau LaTeX
suffisament récent.

Enfin, mais c’est anecdotique, j’ai divisé par 10 ta valeur de
décalage pour qu’il reste quelque chose à lire sur les pages 450 et
451 :-D.

J’espère que ça t’aide !

Le 15/12/2024 à 22:51, Bastien DUMONT a écrit :

Bonsoir,

J’ai synthétisé nos échanges sur cette page (qui traite aussi d’autres questions) : Comment modifier des marges en cours de document ? — FAQ <span class="t-logo">L<span class="a">a</span>T<span class="e">e</span>X</span> GUTenberg
Excellente initiative.
Merci
Eric

Bonjour,

Le 15/12/24 à 21h51, Bastien DUMONT a écrit :

J’ai synthétisé nos échanges sur cette page (qui traite aussi d’autres questions) : Comment modifier des marges en cours de document ? — FAQ <span class="t-logo">L<span class="a">a</span>T<span class="e">e</span>X</span> GUTenberg

Merci Bastien !

N’hésitez pas à faire des remarques ici ou à intervenir directement sur la FAQ.

Et, plus généralement, n’hésitez pas à devenir contributeur de la FAQ pour la mettre à jour ou pour l’enrichir ! Toutes les explications pour ce faire se trouvent ici :

┌──── │ Comment contribuer ? — FAQ LaTeX GUTenberg └────

et je rappelle le très utile exposé à ce sujet que Bastien et Yannick ont donné il y a quelques mois :

┌──── │ 2 mai 2024 : Exposé sur le fonctionnement de la nouvelle version de la FAQ LaTeX GUTenberg du point de vue du contributeur - Groupe francophone des Utilisateurs de TEX, LATEX et logiciels compagnons └────

Bonne journée.

Denis

Bonjour, la liste !

Merci, Bastien, pour cet ajout. Je vais regarder le détail cette semaine
quand j’aurai un peu plus de temps.

Voilà qui me fait penser à un article de 2004 très intéressant de Markus
Kohm pour « Die TeXnische Komödie » sur la question de la correction de
reliure. Il ne traite pas de décalage progressif, mais ça reste un
article passionnant qui à ma connaissance n’a pas été traduit en
français. Je me propose donc de le faire — à un rythme probablement lent
et incertain, du fait de mes disponibilités, mais, vingt après, en est-
on à quelques mois près ? :slight_smile:

Kohm estime qu’il convient de faire l’empagement en fonction de la
correction de reliure. Il a bien entendu raison. Mais, dans le cas d’un
décalage progressif, voilà qui, pour ma part, ne me paraît pas
envisageable — sauf si mes clients acceptaient de payer jusqu’à deux
fois plus cher dans le cas d’une édition PDF en plus d’une édition
imprimée (l’édition PDF ne nécessite en effet aucune correction de
reliure, puisqu’il n’y a pas de reliure).

J’aurai tendance à dire que, puisque le dos carré collé est un procédé
de reliure au rabais imposant une correction de reliure nettement
supérieure à celui d’une reliure à la française (sans parler de la
reliure à la suisse, qui permet de s’en passer totalement), le décalage
progressif est déjà un procédé destiné à limiter la casse et qu’un tel
livre peut bien s’accommoder d’un empagement approximatif.

Pour les germanistes qui voudraient lire l’article, « Bretter, die die
Welt bedeuten » : https://archiv.dante.de/DTK/PDF/komoedie_2004_1.pdf
(p. 31-39).

Bonne fin de journée !

Thomas Savary
1 le Grand-Plessis
F-85340 L’Île-d’Olonne
Tél. Tél. masqué

Le lundi 16 décembre 2024, 15:35:22 CET Denis Bitouzé a écrit :

Bonjour,

Le 15/12/24 à 21h51, Bastien DUMONT a écrit :

J’ai synthétisé nos échanges sur cette page (qui traite aussi
d’autres questions) :
https://faq.gutenberg-asso.fr/3_composition/texte/pages/parametres_d
e_page/modifier_les_marges_en_cours_de_document.html
Merci Bastien !

N’hésitez pas à faire des remarques ici ou à intervenir directement
sur la FAQ.

Et, plus généralement, n’hésitez pas à devenir contributeur de la FAQ
pour la mettre à jour ou pour l’enrichir ! Toutes les explications
pour ce faire se trouvent ici :

┌────

https://faq.gutenberg-asso.fr/8_contribuer/methodes/comment_contribue
r_a_la_faq.html └────

et je rappelle le très utile exposé à ce sujet que Bastien et Yannick
ont donné il y a quelques mois :

┌────

https://www.gutenberg-asso.fr/2-mai-2024-Expose-sur-le-fonctionnement
-de-la-nouvelle-version-de-la-FAQ-LaTeX └────

Bonne journée.