Je mets en page un bouquin de vingt chapitres.

Chaque chapitre fait l'objet d'un fichier numéroté c‹numéro_du_chapitre›. Lors de la mise en page, chacun d'entre eux sera surmonté d'une illustration. Ces illustrations sont numérotées ‹numéro_de_l'image›.jpg.

Je n'ai aucune expérience en matière de programmation. Néanmoins, je me dis que mon code serait plus élégant (car plus court) si j'appelais les chapitres et les illustrations par leur numéro. Quelque chose comme ceci (le pseudo-code est entre les balises [BOUCLE]) :

Ouvrir dans l'éditeur Overleaf
\documentclass[12pt, a5paper, french]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[fulloldstyle,largesmallcaps, light]{kpfonts}
\usepackage{graphicx}
\usepackage{babel}
\begin{document}
    Titre
\begin{center}
    \includegraphics[keepaspectratio = true, width = .5\textwidth]{0.jpg}
\end{center}
[BOUCLE]Pour ‹variable› de 1 à 20, faire :
\newpage
\begin{center}
    \includegraphics[keepaspectratio = true, width = .5\textwidth]{‹variable›.jpg}
\end{center}
\input{c‹variable›}
[/BOUCLE]
\end{document}

C'est facile à imaginer, et sans doute très simple à réaliser, mais pas pour moi. D'où le présent message — quelle que soit la question, jamais je n'hésite à la poser sur texnique.fr !

Posée 16 Déc '16, 14:40

Pathe's gravatar image

Pathe ♦♦
7.4k28196245
Taux d'acceptation : 55%

Modifiée 09 Aoû '17, 19:37


Voici quelques idées.

Avec l'extension pgffor on peut utiliser la commande \foreach \n in{1,...,20} { bla bla avec \n}

Ouvrir dans l'éditeur
\documentclass[12pt, a5paper, french]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[fulloldstyle,largesmallcaps, light]{kpfonts}
\usepackage{tikz}
\usepackage{babel}
\begin{document}
    Titre
\begin{center}
    \includegraphics[keepaspectratio = true, width = .5\textwidth]{0.jpg}
\end{center}
\foreach \n in{1,...,20}  {
\newpage
\begin{center}
    \includegraphics[keepaspectratio = true, width = .5\textwidth]{\n.jpg}
\end{center}
\input{c\n}
}

\end{document}

Remarque l'extension tikz charge à la fois graphicx et pgffor.

Avec des commandes LaTeX (niveau bas)

Ouvrir dans l'éditeur
\documentclass[12pt, a5paper, french]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[fulloldstyle,largesmallcaps, light]{kpfonts}
\usepackage{graphicx}
\usepackage{babel}
\newcounter{mt}
\begin{document}
    Titre
\begin{center}
    \includegraphics[keepaspectratio = true, width = .5\textwidth]{0.jpg}
\end{center}
\makeatletter
\@whilenum\value{mt}<20\do{%
\stepcounter{mt}
\newpage
\begin{center}
    \includegraphics[keepaspectratio = true, width = .5\textwidth]{\themt.jpg}
\end{center}
\input{c\themt}
}
\makeatother

\end{document}

Remarque Il ne faut pas oublier de définir le compteur mt avec \newcounter{mt}.

Ou avec TeX (plus bas)

Ouvrir dans l'éditeur
\documentclass[12pt, a5paper, french]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[fulloldstyle,largesmallcaps, light]{kpfonts}
\usepackage{graphicx}
\usepackage{babel}
\newcounter{mt}
\begin{document}
    Titre
\begin{center}
    \includegraphics[keepaspectratio = true, width = .5\textwidth]{0.jpg}
\end{center}
\loop
\stepcounter{mt}
\newpage
\begin{center}
    \includegraphics[keepaspectratio = true, width = .5\textwidth]{\themt.jpg}
\end{center}
\input{c\themt}
\ifnum\value{mt}<20\repeat
\end{document}

Il y a aussi l'extension multido.

Lien permanent

Publiée 16 Déc '16, 15:20

touhami's gravatar image

touhami
9.6k410
Taux d'acceptation : 51%

Modifiée 16 Déc '16, 15:33

1

La solution dite en TeX n'en est pas une puisque les macros \newcounter, \stepcounter, \newpage, \value et la forme avec accolades \input{} sont toutes des macros de LaTeX. Par ailleurs, je signale également que les macros \loop et \repeat, certes figurent dans plain mais appartiennent également au format LaTeX.

Une vraie solution TeX aurait été d'écrire une macro récursive toute simple du type \dontimes{<n>}{<code>}

(17 Déc '16, 00:51) unbonpetit ♦♦ unbonpetit's gravatar image

@touhami : dans le préambule de votre première solution, vous avez oublié \usepackage{pgffor}.

(18 Déc '16, 01:23) Pathe ♦♦ Pathe's gravatar image
1

@Pathe j'ai utilisé \usepackage{tikz} (remarque au dessous de code)

(18 Déc '16, 10:11) touhami touhami's gravatar image

@touhami : mais oui, suis-je bête !

Et vive Till Tantau !

(18 Déc '16, 13:38) Pathe ♦♦ Pathe's gravatar image

Dans la cas présent, je déconseille fortement l'usage de \foreach car chaque chapitre sera dans un groupe (au sens TeX)... Un peu comme si on transformait la commande \chapter{titre} ... en \begin{chapter}{titre} ... \end{chapter}.

(01 Fév '17, 09:46) Paul Gaborit Paul%20Gaborit's gravatar image

Pour ajouter à l'embarras de richesses :)

avec LaTeX + ifthen

Ouvrir dans l'éditeur
\documentclass[12pt, a5paper, french]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[fulloldstyle,largesmallcaps, light]{kpfonts}
\usepackage{graphicx}
\usepackage{babel}
\usepackage{ifthen}
\newcounter{mt}
\begin{document}
Titre

\whiledo{\value{mt}<21}{%
  \newpage
  \begin{center}
    \includegraphics[keepaspectratio = true, width = .5\textwidth]{\arabic{mt}.jpg}
  \end{center}
  \input{c\arabic{mt}}
  \stepcounter{mt}
}

\end{document}
Lien permanent

Publiée 17 Déc '16, 11:26

Le%20TeXnicien%20de%20surface's gravatar image

Le TeXnicien de surface
2.0k814
Taux d'acceptation : 28%

2

On peut aller vers une grande simplicité, vierge de tout package avec cette macro (non longue) \repeatntimes{<n>}{<code>} :

\def\antefi#1\fi{\fi#1}

\def\repeatntimes#1#2{\ifnum#1>0

\antefi{#2\expandafter\repeatntimes\expandafter{\number\numexpr#1-1}{#2}}\fi}

(17 Déc '16, 12:28) unbonpetit ♦♦ unbonpetit's gravatar image

Voici une solution avec le paquetage multido :

Ouvrir dans l'éditeur Overleaf
\documentclass[12pt, a5paper, french]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[fulloldstyle,largesmallcaps, light]{kpfonts}
\usepackage{graphicx}
\usepackage{babel}
\usepackage{multido}
\begin{document}
    Titre
\begin{center}
    \includegraphics[keepaspectratio = true, width = .5\textwidth]{0.jpg}
\end{center}
\multido{\i=1+1}{20}{%
\newpage
\begin{center}
    \includegraphics[keepaspectratio = true, width = .5\textwidth]{\i.jpg}
\end{center}
\input{c\i}}
\end{document}

Voir la doc de multido : à noter que la première lettre de la variable (\i ici) détermine son type — ici entier, parce que i comme « integer ».

Lien permanent

Publiée 30 Jan '17, 22:25

vincentb1's gravatar image

vincentb1
1874
Taux d'acceptation : 0%

En utilisant la première solution de touhami et en m'inspirant de la réponse de Denis à ma question sur la « traduction » de chiffres en lettres, je propose le code suivant, qui utilise la variable \n pour appeler images et chapitres, mais aussi, grâce à l'extension fmtcount, pour numéroter ceux-ci en toutes lettres, avec capitale initiale qui plus est :

Ouvrir dans l'éditeur
\documentclass[12pt, a5paper, french]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[fulloldstyle,largesmallcaps, light]{kpfonts}
\usepackage{graphicx}
\usepackage{pgffor}
\usepackage{fmtcount}
\usepackage{babel}
\frenchbsetup{og=«, fg=»}
\begin{document}
\foreach \n in{1,...,20}  {
    \newpage
    \begin{center}
        {\large \Ordinalstringnum{\n} chapitre}\\
            \includegraphics[keepaspectratio = true, width = .5\textwidth]{\n.jpg}
        \end{center}
        \input{c\n}
    }
\end{document}

En effet, le paramètre \ordinalstringnum donne « premier » tandis que \Ordinalstringnum donne « Premier », adoncques initié par une capitale : l'extension fmtcount est vraiment bien pensée.

LaTeX, c'est chouette : un code aussi compact pour générer un long document, ça me réjouit.

Lien permanent

Publiée 18 Déc '16, 01:22

Pathe's gravatar image

Pathe ♦♦
7.4k28196245
Taux d'acceptation : 55%

Modifiée 18 Déc '16, 16:08

Désolé, mais cette réponse ne se compile pas dans overleaf. Le package pgffor semble non disponible, de même sur ctan.org où il ne figure pas.

(18 Déc '16, 07:05) pzorba75 pzorba75's gravatar image
1

@pzorba75 le code ne compile pas à cause des fichier manquants (chapitres et images). Le module pgffor fait partie de l'extension pgf (tikz).

(18 Déc '16, 10:14) touhami touhami's gravatar image
1

En fait le ctan connaît pgffor, mais pour le trouver il faut faire une recherche approfondie dans les noms de fichiers.

(18 Déc '16, 16:06) Pathe ♦♦ Pathe's gravatar image
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.