Page 1 sur 1

Fin de chapitre

MessagePosté: Lundi 26 Août 2013, 14:48
par stef59
Bonjour à tous,

la commande \AtEndDocument permet de placer un élément automatiquement à la fin du document.

Je cherche une commande du même style qui place l'argument souhaité en fin de chapitre. Visblement \AtEndChapter n'existe pas...

Quelqu'un sait si une telle commande existe ? Ou sinon, comment la réaliser ?


Merci beaucoup.

Re: Fin de chapitre

MessagePosté: Mardi 27 Août 2013, 14:24
par pg
Une telle commande n'est pas possible car seul le début de chapitre est marqué (par \chapter). On peut par contre mettre quelque chose au début du chapitre suivant. Il faut par contre marquer la fin du dernier chapitre à la main. L'exemple suivant rajoute $***$ à la fin de chaque chapitre.

Code: Tout sélectionner
\documentclass{book}

\usepackage{lipsum}% texte bidon

\newcommand{\EndChapter}{}
\newcommand{\AtEndChapter}[1]{%
  \renewcommand{\EndChapter}{#1}%
}

\makeatletter
\let\original@chapter\chapter
\def\@first@chapter{1}
\renewcommand{\chapter}{%
  \ifnum\@first@chapter=1 \gdef\@first@chapter{0}\else\EndChapter\fi
  \original@chapter}
\makeatother

\AtEndChapter{\centerline{$***$}}

\begin{document}

\chapter{Titre}

\lipsum

\chapter{Titre}

\lipsum

\chapter{Titre}

\lipsum

\chapter{Titre}

\lipsum

\EndChapter % obligatoire pour le dernier chapitre

\end{document}

Re: Fin de chapitre

MessagePosté: Mardi 27 Août 2013, 14:51
par stef59
Merci beaucoup pour la réponse, je vais essayer cela :)

Re: Fin de chapitre

MessagePosté: Jeudi 29 Août 2013, 00:22
par touhami
Il y a le petit problème des flottants
Code: Tout sélectionner
\documentclass{book}

\usepackage{lipsum}% texte bidon

\newcommand{\EndChapter}{}
\newcommand{\AtEndChapter}[1]{%
  \renewcommand{\EndChapter}{#1}%
}

\makeatletter
\let\original@chapter\chapter
\def\@first@chapter{1}
\renewcommand{\chapter}{%
  \ifnum\@first@chapter=1 \gdef\@first@chapter{0}\else\EndChapter\fi
  \original@chapter}
\makeatother

\AtEndChapter{\centerline{$***$}}

\begin{document}

\chapter{Titre}

\lipsum
\begin{table}
\begin{tabular}{|c|c|c|c|}
\hline 1 & 2& 3 & 4 \\
\hline 5 & 6 &7 & 8 \\
\hline
\end{tabular}
\caption{test}
\end{table}

\chapter{Titre}

\lipsum

\chapter{Titre}

\lipsum

\chapter{Titre}

\lipsum

\EndChapter % obligatoire pour le dernier chapitre

\end{document}

Re: Fin de chapitre

MessagePosté: Jeudi 29 Août 2013, 10:42
par pg
Quel problème exactement ? J'obtiens bien le tableau en haut de la page et les $***$ juste après le texte.

Re: Fin de chapitre

MessagePosté: Jeudi 29 Août 2013, 12:53
par touhami
Je m'excuse le problème se produit avec
Code: Tout sélectionner
\documentclass{book}

\usepackage{lipsum}% texte bidon

\newcommand{\EndChapter}{}
\newcommand{\AtEndChapter}[1]{%
  \renewcommand{\EndChapter}{#1}%
}

\makeatletter
\let\original@chapter\chapter
\def\@first@chapter{1}
\renewcommand{\chapter}{%
  \ifnum\@first@chapter=1 \gdef\@first@chapter{0}\else\EndChapter\fi
  \original@chapter}
\makeatother

\AtEndChapter{\centerline{$***$}}

\begin{document}

\chapter{Titre}

\lipsum[1]
\begin{table}
\begin{tabular}{|c|c|c|c|}
\hline 1 & 2& 3 & 4 \\
\hline 5 & 6 &7 & 8 \\
\hline
\end{tabular}
\caption{test}
\end{table}

\chapter{Titre}

\lipsum

\chapter{Titre}

\lipsum

\chapter{Titre}

\lipsum

\EndChapter % obligatoire pour le dernier chapitre

\end{document}

avec
\lipsum[1]

Re: Fin de chapitre

MessagePosté: Jeudi 29 Août 2013, 13:13
par pg
Dans ce cas, le $***$ est juste après la fin du chapitre et le tableau est en bas. Je considérerai cela comme le comportement normal (les flottants ne font pas partie du texte), mais si on veut que la marque de fin de chapitre soit après les flottants, une possibilité est d'utiliser une \FloatBarrier du package placeins :

Code: Tout sélectionner
\documentclass{book}

\usepackage{lipsum}% texte bidon

\usepackage{placeins}

\newcommand{\EndChapter}{}
\newcommand{\AtEndChapter}[1]{%
  \renewcommand{\EndChapter}{\FloatBarrier#1}%
}

\makeatletter
\let\original@chapter\chapter
\def\@first@chapter{1}
\renewcommand{\chapter}{%
  \ifnum\@first@chapter=1 \gdef\@first@chapter{0}\else\EndChapter\fi
  \original@chapter}
\makeatother

\AtEndChapter{\centerline{$***$}}

\begin{document}

\chapter{Titre}

\lipsum[1]

\begin{table}\centering
\begin{tabular}{|c|c|c|c|}
\hline 1 & 2& 3 & 4 \\
\hline 5 & 6 &7 & 8 \\
\hline
\end{tabular}
\caption{test}
\end{table}

\chapter{Titre}

\lipsum

\chapter{Titre}

\lipsum

\chapter{Titre}

\lipsum

\EndChapter % obligatoire pour le dernier chapitre

\end{document}


Dans cet exemple, le $***$ se retrouve alors sur la page suivant le tableau flottant.

Re: Fin de chapitre

MessagePosté: Jeudi 29 Août 2013, 13:26
par marco56
Ou plus simple mais cela ne conviendra sans doute pas aux puristes : ajouter un environnement tablehere pour fixer le tableau.
On peut faire la même chose avec figurehere.

Code: Tout sélectionner
    \documentclass{book}

    \usepackage{lipsum}% texte bidon


    \newcommand{\EndChapter}{}
    \newcommand{\AtEndChapter}[1]{%
      \renewcommand{\EndChapter}{#1}%
    }

    \makeatletter
   
    \newenvironment{tablehere}
    {\def\@captype{table}}
    {}

    \let\original@chapter\chapter
    \def\@first@chapter{1}
    \renewcommand{\chapter}{%
      \ifnum\@first@chapter=1 \gdef\@first@chapter{0}\else\EndChapter\fi
      \original@chapter}
    \makeatother

    \AtEndChapter{\centerline{$***$}}

    \begin{document}

    \chapter{Titre}

    \lipsum[1]
    \begin{tablehere}
    \begin{center}
    \begin{tabular}{|c|c|c|c|}
    \hline 1 & 2& 3 & 4 \\
    \hline 5 & 6 &7 & 8 \\
    \hline
    \end{tabular}
    \end{center}
    \caption{test}
    \end{tablehere}

    \chapter{Titre}

    \lipsum

    \chapter{Titre}

    \lipsum

    \chapter{Titre}

    \lipsum

    \EndChapter % obligatoire pour le dernier chapitre

    \end{document}

Re: Fin de chapitre

MessagePosté: Jeudi 29 Août 2013, 13:39
par pg
Qu'y aurait-il de choquant ? Si on ne veut pas qu'un tableau flotte, il est normal de ne pas le faire flotter.

Re: Fin de chapitre

MessagePosté: Jeudi 29 Août 2013, 18:23
par marco56
J'imaginais qu'on me dirait que les tableaux flottants, c'était l'esprit de LaTeX...