Discussion:
titlesec et les espaces avant et après
(trop ancien pour répondre)
François Patte
2014-10-27 10:35:01 UTC
Permalink
Bonjour,

J'essaie d'utiliser le package titlesec pour redéfinir les sections
conformément à ce que demande un éditeur, mais j'ai du mal avec les
champs "espace avant" et "espace après" qui ne fonctionnent visiblement
pas de manière "absolue".

Par exemple on me demande: Les intertitres de niveaux 1 sont en corps
13, composés en petites capitales, avec un interligne de 14 points.
*L’espace avant et après le titre est de 14 points (env. 5 mm).*

Si je mets:

\titlespacing*{\section}{0pt}{14pt}{14pt}

L'espace avant est démesuré et ne correspond absolument pas à ce qui est
demandé. En tatonnant je mets:

\titlespacing*{\section}{0pt}{-10pt}{14pt}

Et j'obtiens à peu près ce qui est demandé (mais pas partout). Y a-t-il
une méthode moins empirique?

D'autre part faut-il mettre des facteur d'élasticité par exemple:

\titlespacing*{\section}{0pt}{-10pt plus 5pt minus 2pt}{14pt plus 5pt
minus 2pt}

Et si oui 1) comment déterminer les limites imposées à l'élasticité? 2)
est-ce que latex respecte alors *absolument* cette élasticité ie. ne
tire pas plus que 5pt et ne compresse pas plus que 2pt dans l'exemple
ci-dessus, compte tenu du fait que l'option \flushbottom est activée?


Merci
--
François Patte
Université Paris Descartes
unknown
2014-10-27 11:46:17 UTC
Permalink
Post by François Patte
Bonjour,
J'essaie d'utiliser le package titlesec pour redéfinir les sections
conformément à ce que demande un éditeur,
Celui qui préfère Word à du PDF ? :-)
Post by François Patte
mais j'ai du mal avec les
champs "espace avant" et "espace après" qui ne fonctionnent visiblement
pas de manière "absolue".
Cela dépend de ce qu'on appelle absolue mais si.
Post by François Patte
Par exemple on me demande: Les intertitres de niveaux 1 sont en corps
13, composés en petites capitales, avec un interligne de 14 points.
*L’espace avant et après le titre est de 14 points (env. 5 mm).*
\titlespacing*{\section}{0pt}{14pt}{14pt}
L'espace avant est démesuré et ne correspond absolument pas à ce qui est
\titlespacing*{\section}{0pt}{-10pt}{14pt}
Arrrgl ! À supprimer de tout urgence si on ne veut pas de mauvaise
surprise.
Post by François Patte
Et j'obtiens à peu près ce qui est demandé (mais pas partout). Y a-t-il
une méthode moins empirique?
On va commencer par indiquer ce qui fonctionne ! Les indications
d'espacements fournies par \titlespacing* sont scrupuleusement
respectées mais ce sont des espacements *en plus* de l'interlignage
normal. Petit ECM pour voir :

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{titlesec}
\usepackage[french]{babel}

\titlespacing*{\section}{0pt}{24pt}{14pt}

\newcommand\Line[1]{%
\leavevmode
\hbox{\vbox to0pt{\vss\hrule width0.4pt depth0pt height#1}}%
}

\begin{document}
Un texte avant
\section{\Line{\dimexpr\baselineskip+24pt} Titre de section}
\Line{\dimexpr\baselineskip+14pt}Un texte après
\end{document}
Post by François Patte
\titlespacing*{\section}{0pt}{-10pt plus 5pt minus 2pt}{14pt plus 5pt
minus 2pt}
Il ne *faut* pas, on peut en relation avec une discussion avec
l'éditeur... sauf que si c'est l'éditeur qui préfère Word à un PDF, j'ai
un gros doute sur sa compréhension d'une telle discussion mais peut-être
suis-je trop méchant :-)
Post by François Patte
Et si oui 1) comment déterminer les limites imposées à l'élasticité? 2)
est-ce que latex respecte alors *absolument* cette élasticité
Non. J'aime les réponses définitives :-)
Post by François Patte
ie. ne
tire pas plus que 5pt et ne compresse pas plus que 2pt dans l'exemple
ci-dessus, compte tenu du fait que l'option \flushbottom est activée?
Le problème est effectivement le \flushbottom. C'est le syndrome, on
ne peut pas avoir le beurre et l'argent du beurre (et le sourire de la
crémière). ECM pour voir.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{titlesec}
\usepackage{lipsum}
\usepackage[french]{babel}

\titlespacing*{\section}{0pt}{24pt}{14pt}
\newcommand\grosbloc{%
\par
\fbox{%
\begin{minipage}[c][3cm]{0.5\linewidth}
\vspace*{\stretch{1}}
\centering
Une superbe figure
\vspace*{\stretch{1}}
\end{minipage}
}
\par
}

\flushbottom

\newcommand\Line[1]{%
\leavevmode
\hbox{\vbox to0pt{\vss\hrule width0.4pt depth0pt height#1}}%
}

\begin{document}
\lipsum[1-2]
\grosbloc
\section{\Line{\dimexpr\baselineskip+24pt} Titre de section}
\Line{\dimexpr\baselineskip+14pt}Une ligne de texte avant un gros
bloc;
\grosbloc
\grosbloc
\end{document}

Dans cet exemple, les espacements verticaux sont bien plus grands que
ceux indiqués par \titlespacing*. C'est justement dû à ce \flushbottom.
Dans le cas présent, comme les composantes d'étirement et de contraction
étaient nulles, la seule chose qui il y a eu est un message
d'avertissement dans le rapport de compilation :

Underfull \vbox (badness 10000) has occurred while \output is active [1]

Si on change la ligne \titlespacing* en :
\titlespacing*{\section}{0pt}{24pt plus35pt}{14pt}
il n'y a plus de message d'avertissement et la seule chose que cela
change c'est que cet espacement se mange quasiment tout seul
l'élasticité verticale de la page (avant, l'espacement inter-paragraphe
s'en chargeait en partie). Avec plus34pt, on a un Underfull \vbox mais
avec une badness non infinie (environ 1000 au lieu de 10000 qui est
l'infini TeXien en la matière).
Bref, cela n'améliore pas vraiment les choses. Donner une valeur non
nulle aux composantes d'étirement et de compression va juste indiquer
qu'on rend les choses verticalement plus souples au niveau des titres de
section par rapport aux sauts inter-paragraphes « normaux ». Je ne suis
pas certain que ce soit une bonne idée.
Maintenant, mon ECM montre pourquoi, les choses se passe bien la
plupart du temps. Si on a une page normale avec du texte normal et des
paragraphes normaux, TeX trouvera toujours une coupure de ligne proche
des espacements verticaux naturels (sans étirement et compression). De
temps, en temps, s'il y a des gros pavés insécables au niveau d'une
coupure de page, les choses peuvent se passer un peu plus
douloureusement. C'est inévitable, sauf à modifier le texte. Ici, mon
exemple était évidemment anti-naturel au possible mais on peut envisager
qu'une section soit suivie d'un peu de texte puis d'une succession d'une
section, sous-section et sous-sous-section à la queue-leu-leu. Si ce
trois titres à la suite tombent juste avant une coupure de page on va
avoir le problème décrit ici.
Avec une définition du type
\titlespacing*{\section}{0pt}{14pt minus10pt}{14pt}
la loi de Murphy aidant, si une telle striucture apparaît assez en avant
d'une coupure de page et qu'en tassant au maximum, cela fait rentrer
les trois titres et une ligne de texte qui suit en fin de page, on va
utiliser la compression maximum. Si la fonte est en 13pt, on a un
\baselineskip qui vaut 15.6pt (normalement). Cela va donc donner
potentiellement une distance de 5.6pt entre la ligne de base du texte
qui précède et celle du titre de section. Le qualificatif d'horrible me
semble tout à fait séduisant pour décrire le résultat obtenu :-)
Tout ce qui précède valait pour une compression de 10pt, c'est-à-dire
pour la syntaxe énoncée ci-dessus. Ta définition indiquée dans le post est :
\titlespacing*{\section}{0pt}{-10pt}{14pt}
et là, soit tu nous cache quelque chose, soit tu as fait un lapsus de
clavier. Sinon, ici, c'est simple : le résultat est *toujours* horrible
:-). Re ECM :

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{titlesec}
\usepackage[french]{babel}

\titlespacing*{\section}{0pt}{-10pt}{14pt}

\begin{document}
Un texte avant
\section{Titre de section}
Un texte après
\end{document}

Jean-Côme Charpentier
--
Hé oui, avec LaTeX, on peut difficilement aspirer à d'autres fortunes
qu'un fichier de citations trollesques. Snif.
-+- Joss in fr.comp.text.tex -+-
François Patte
2014-10-28 09:34:28 UTC
Permalink
Post by unknown
Post by François Patte
Bonjour,
J'essaie d'utiliser le package titlesec pour redéfinir les sections
conformément à ce que demande un éditeur,
Celui qui préfère Word à du PDF ? :-)
<HS> Oui! En fait, ce n'est pas tant l'éditeur lui-même (Droz, Genève)
que son relais dans l'université française, l'école pratique des hautes
études, qui a son service d'édition et, les choses étant ce qu'elles
sont, on ne va demander à des "sciences humaines" d'utiliser autre
choses que ce qui est installé par défaut sur leur ordinateur quand ils
l'achètent.... Maieul Rouquette avec son "LaTeX pour les sciences
humaines" a encore un long travail de persuasion à effectuer...

Quand je vois nos collègues orientalistes américains, anglais,
néerlandais... je me dis qu'en France il y a un peu de ringardise dans
l'université!
</HS>

<couic>
Post by unknown
On va commencer par indiquer ce qui fonctionne ! Les indications
d'espacements fournies par \titlespacing* sont scrupuleusement
respectées mais ce sont des espacements *en plus* de l'interlignage
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{titlesec}
\usepackage[french]{babel}
\titlespacing*{\section}{0pt}{24pt}{14pt}
\newcommand\Line[1]{%
\leavevmode
\hbox{\vbox to0pt{\vss\hrule width0.4pt depth0pt height#1}}%
}
\begin{document}
Un texte avant
\section{\Line{\dimexpr\baselineskip+24pt} Titre de section}
\Line{\dimexpr\baselineskip+14pt}Un texte après
\end{document}
Alors bravo! Et merci! Voilà de la pédagogie active: cet ECM, et les
suivants, non seulement pointent mes erreurs dans les configurations que
j'ai pu faire mais donnent des tests utiles pour contrôler les
corrections que ces indications me permettent d'y apporter.

<couic>
Post by unknown
Tout ce qui précède valait pour une compression de 10pt, c'est-à-dire
\titlespacing*{\section}{0pt}{-10pt}{14pt}
et là, soit tu nous cache quelque chose, soit tu as fait un lapsus de
clavier. Sinon, ici, c'est simple : le résultat est *toujours* horrible
:-).
Alors voilà -- shame on me -- je n'ai pas donné la partie \titleformat:

\titleformat{\section}%
[hang]%
{\fontsize{13}{14}\entetea\selectfont\scshape\filcenter}%
{\thesection.~~}%
{0pt}%<---- le coupable!
{}%

Où trainaît au 4ème argument un 12pt (à la place du 0pt que j'y ai mis
maintenant) hérité d'un copier-coller de je ne sais où...

Merci encore, Je mets des \Line partout où je veux vérifier les
espacements, ça permet de visualiser les choses.

PS. Es-tu toujours d'accord pour te pencher sur xindy et les ordres
alphabétiques baroques? Je trouve qu'il manque à la palette TeX des
outils de classements: l'index en est un, mais pouvoir faire une liste
classée de vers dans un appendice serait intéressant aussi par exemple...
--
François Patte
Université Paris Descartes
unknown
2014-10-28 11:57:12 UTC
Permalink
Post by François Patte
[...]
\titleformat{\section}%
[hang]%
{\fontsize{13}{14}\entetea\selectfont\scshape\filcenter}%
{\thesection.~~}%
{0pt}%<---- le coupable!
{}%
Où trainaît au 4ème argument un 12pt (à la place du 0pt que j'y ai mis
maintenant) hérité d'un copier-coller de je ne sais où...
En définitive, est-ce que cela fonctionne comme tu veux maintenant...
ou plutôt comme l'éditeur bizarre veut que cela fonctionne ?
Petite note, j'avais dit que normalement l'interlignage d'une fonte
avec un corps de 13pt était de 15.6pt (20% de plus). Il n'y a évidemment
rien d'absolu et cela peut (doit, devrait ?) dépendre de la fonte
effective utilisée. Ce 20% en plus est le choix systématique de LaTeX.
Cela dit, tu as défini un interlignage de 14pt pour ta fonte de section.
Cela t'arrange peut être pour limiter le saut vertical total avant le
titre de section mais cela risque de produire des choses éventuellement
bizarres si le titre s'étend sur plusieurs lignes.
Post by François Patte
Merci encore, Je mets des \Line partout où je veux vérifier les
espacements, ça permet de visualiser les choses.
Avec plaisir !

Jean-Côme Charpentier
--
Quand on utilise LaTeX pour faire du coloriage, c'est sûr que le mieux
c'est utiliser pdfLaTeX sous Windows. Après on est mûr pour passer au
logiciel le plus puissant : Word (bien qu'en terme de place disque ce
soit pas super... mais c'est tellement bien à côté).
-+- Joss in fr.comp.text.tex -+-
François Patte
2014-10-28 15:55:31 UTC
Permalink
Post by unknown
Post by François Patte
[...]
\titleformat{\section}%
[hang]%
{\fontsize{13}{14}\entetea\selectfont\scshape\filcenter}%
{\thesection.~~}%
{0pt}%<---- le coupable!
{}%
Où trainaît au 4ème argument un 12pt (à la place du 0pt que j'y ai mis
maintenant) hérité d'un copier-coller de je ne sais où...
En définitive, est-ce que cela fonctionne comme tu veux maintenant...
ou plutôt comme l'éditeur bizarre veut que cela fonctionne ?
Oui, c'est très bien et avec la commande \Line que tu as définie, je
peux vérifier les mesures; même avec flushbottom, les étirements sont
imperceptibles.
Post by unknown
Petite note, j'avais dit que normalement l'interlignage d'une fonte
avec un corps de 13pt était de 15.6pt (20% de plus). Il n'y a évidemment
rien d'absolu et cela peut (doit, devrait ?) dépendre de la fonte
effective utilisée. Ce 20% en plus est le choix systématique de LaTeX.
Cela dit, tu as défini un interlignage de 14pt pour ta fonte de section.
Cela t'arrange peut être pour limiter le saut vertical total avant le
titre de section mais cela risque de produire des choses éventuellement
bizarres si le titre s'étend sur plusieurs lignes.
J'ai mis une taille de corps à 13pt avec interligne à 14pt parce que
c'est ce qui est demandé, s'il y a des collisions je les soumettrai à
l'éditeur...

Merci encore.
--
François Patte
Université Paris Descartes
Stéphane CARPENTIER
2014-10-31 09:26:48 UTC
Permalink
Post by François Patte
sont, on ne va demander à des "sciences humaines" d'utiliser autre
Je ne sais pas pourquoi tu mets des guillemets. Mais si c'est parce que
tu considères que l'histoire n'est pas une science alors que ça en fait
partie, je suis entièrement d'accord.
--
Post by François Patte
----------------72 caractères-:-si-ça-dépasse-je-ne-lis-pas-----------<
Stéphane
http://docs.fiat-linux.fr/lagivim.pdf
Stéphane CARPENTIER
2014-10-31 09:23:27 UTC
Permalink
Post by unknown
Post by François Patte
J'essaie d'utiliser le package titlesec pour redéfinir les sections
conformément à ce que demande un éditeur,
Celui qui préfère Word à du PDF ? :-)
C'est pas choquant, s'il croit que le rédacteur a créé son pdf à partir
de Word, il préfère le format modifiable au rendu figé. Comme nous
savons que le pdf a été généré par LaTeX, nous savons qu'il a un
meilleur rendu qu'un document Word. Mais l'éditeur ne le sait pas
forcément.
--
Post by unknown
----------------72 caractères-:-si-ça-dépasse-je-ne-lis-pas-----------<
Stéphane
http://docs.fiat-linux.fr/lagivim.pdf
Continuer la lecture sur narkive:
Loading...