Dans la classe https://github.com/sveyret/LaTeX/blob/master/publivre.cls , les commandes chapter et part sont redéfinies afin de modifier le style de la dernière page du chapitre, et ne pas y afficher de numéro de page. Cela fonctionne plutôt bien, sauf lorsque ce qu'il y a à afficher sur la dernière page est très court. Dans ce cas, c'est l'avant-dernière page qui n'a pas de numéro.

Voici un exemple (à compiler avec pdflatex) :

Ouvrir dans l'éditeur Overleaf
\documentclass[chapnumsimple]{publivre}
\usepackage{lipsum}

\Titre{Un livre}
\Auteur{Veyret}{Stéphane}

\CouvResume{Résumé}

\begin{document}

\part{Première partie}

\chapter{}

\lipsum[1-5]

— Oui, je suis d'accord. Mais il faudrait que ce bout de texte soit un tout petit peu plus long.

\chapter{}

\lipsum[7-22]

\chapter{}

\lipsum[26-30]

\end{document}

Vous verrez que, à la fin du premier chapitre, la dernière page à un numéro, alors que l'avant dernière n'en a pas. De plus, sur cet exemple, il y a même une page vide générée comme dernière page de chapitre (et je ne comprends pas pourquoi). Ce n'est pas le cas dans mon cas d'utilisation réel, où il y a toujours au moins quelques lignes sur la dernière page. Mais je n'ai pas réussi à le reproduire dans un exemple minimaliste.

Posée 22 Aoû '17, 00:18

sveyret's gravatar image

sveyret
143310
Taux d'acceptation : 50%

Modifiée 23 Aoû '17, 23:25

1

Le problème vient de \leavevmode dans la définition \newcommand\@TestEndChapter{% \if@danschapitre\@danschapitrefalse\leavevmode\AtEndChapter\fi% }

(22 Aoû '17, 01:13) touhami touhami's gravatar image

Pour résoudre le problème remplacer \leavevmode par \par. Vous pouvez ajouter \par\thispagestyle{headings} au début de la définition de \chapter et \part directement.

(22 Aoû '17, 04:23) touhami touhami's gravatar image

Non, je ne peux pas le mettre au début de \chapter, sinon, cela va mettre ce style sur la page précédent le premier chapitre, ainsi que sur les pages entre les noms de parties et le premier chapitre qui suit.

(23 Aoû '17, 23:27) sveyret sveyret's gravatar image
1

@sveyret Attention ! Les contre-obliques (\) saisies telles quelles dans les contributions ne sont visibles que si elles sont insérées en tant que ⟨code⟩ ou, comme vous l'avez fait, en doublant ladite contre-oblique (mais cette dernière méthode est sous-optimale). Pour insérer du ⟨code⟩, notamment des commandes LaTeX, cf. la FAQ Comment mettre en forme ma contribution ?. Merci de corriger votre contribution si cela n'a pas déjà été fait.

(25 Aoû '17, 14:41) denis ♦♦ denis's gravatar image

@AndréC Il est louable de suggérer des améliorations à la classe de sveyret, mais texnique.fr n'est pas le lieu approprié pour cela : il est de loin préférable d'ouvrir une « issue » sur son dépôt GitHub.

(25 Aoû '17, 14:46) denis ♦♦ denis's gravatar image

Je fais un point afin de pouvoir clôturer cette question et aider les autres personnes qui seraient dans le même cas que moi.

Grâce aux informations données par @touhami, j'ai appris un peu mieux comment fonctionnait TeX, ce qui m'a permis de réécrire complètement ma classe, mais cette fois, en comprenant ce que je faisais… ;-) Pour éviter le problème cité, j'ai utilisé, toujours sur la suggestion de @touhami, un système avec les \mark.

Pour ceux qui veulent voir la nouvelle classe elle se trouve ici :

https://github.com/sveyret/LaTeX/blob/master/livrelitt.cls

Lien permanent

Publiée 13 Sep '17, 10:13

sveyret's gravatar image

sveyret
143310
Taux d'acceptation : 50%

Le problème de la page vide dans l'ECM vient de la ligne blanche avant la commande \chapter. En effet, cette page vide contient un paragraphe d'une seule ligne (vide). Voir cet exemple

Ouvrir dans l'éditeur Overleaf
\documentclass{article} 
\begin{document}
foo

\leavevmode

foo
\end{document}

Je suppose que vous n'avez pas laissé cette ligne blanche dans le document réel.

Le problème réel est dû au fonctionnement de (La)TeX. En effet TeX collecte le contenue de la page paragraphe par paragraphe (ou ligne par ligne) avant de décider où il coupe la page. On considère, par exemple,

Ouvrir dans l'éditeur Overleaf
\documentclass[chapnumsimple]{publivre}
\usepackage{lipsum}
\Titre{Un livre}
\Auteur{Veyret}{Stéphane}
\CouvResume{Résumé}
\begin{document}
\part{}
\chapter{}
\lipsum[1-5]

— Oui, je suis d'accord. Mais il faudrait que ce bout de texte soit un tout petit peu plus long.
— Oui, je suis d'accord. Mais il faudrait que ce bout de texte soit un tout petit peu plus long.
\chapter{}

\end{document}

Lorsque (La)TeX rencontre la commande \chapter il lit \leavevmode\thispagestyle{...} (\leavevmode ne fait rien dans le mode horizontal) or le dernier paragraphe n'est pas fini, les fins de lignes ne sont pas encore construits i.e le paragraphe n'est pas encore coupé en lignes et ces lignes ne sont pas envoyées à la page pour voir si elle doit être couper ou il y a encore de place pour des lignes supplémentaires. Donc la décision \thispagestyle{...} a été fait avant que (La)TeX sache qu'il y a une nouvelle page.

La solution que je propose est de remplacer \leavevmode dans \newcommand\@TestEndChapter{% \if@danschapitre\@danschapitrefalse\leavevmode\AtEndChapter\fi% } par la commande \par.

Lien permanent

Publiée 22 Aoû '17, 22:42

touhami's gravatar image

touhami
9.6k410
Taux d'acceptation : 51%

Modifiée 23 Aoû '17, 13:03

Merci beaucoup pour votre réponse. En fait, j'avais ajouté le \leavevmode pour corriger le problème, et cela m'avait semblé être un peu mieux… Finalement, force est de constater que ce n'est pas le cas. J'ai donc remplacé par un \par (correction effectuée sur le site github). Par contre, maintenant, en fin de chapitre 2, la page 15 n'est pas numéroté, tandis que la page 16 l'est.

(23 Aoû '17, 23:23) sveyret sveyret's gravatar image
1

Il faut donc que je passe à une solution plus sophistiquée. La solution que je peux imaginer est d'utiliser le système des \marks. Je vais éditer ma réponse prochainement.

(24 Aoû '17, 02:41) touhami touhami's gravatar image

Merci beaucoup @touhami. Je ne comprends pas toujours comment TeX fonctionne. J'aimerai bien trouver un ouvrage de référence en ligne pour l'étudier en détail…

(26 Aoû '17, 14:01) sveyret sveyret's gravatar image

@sveyret Il faut ne publier de commentaires que s'ils enrichissent la base de connaissances (La)TeX et, en particulier, éviter ceux qui ne contiennent qu'une confirmation de solution ou que des remerciements. Le vôtre va donc être supprimé.

(27 Aoû '17, 17:25) denis ♦♦ denis's gravatar image

Merci @touhami pour les références et la piste des \marks. Je pense que je vais me débrouiller seul grâce à cela. Je reviendrai ici lorsque j'aurai une réponse.

(28 Aoû '17, 21:07) sveyret sveyret's gravatar image
Affichage de 5 parmi 6 Afficher 1 commentaire(s) en plus
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.