Le livre que j'essaie de produire comporte de nombreuses pages logiques qui ont vocation à figurer sur une seule page physique (cf. geometry).

Voici un exemple concret :

Ouvrir dans l'éditeur Overleaf
\documentclass[10pt]{extarticle}
\usepackage[a5paper]{geometry}
\usepackage[T1]{fontenc}
\usepackage{ebgaramond}
\usepackage{multirow}
\usepackage{array, blkarray}
\usepackage{booktabs}
\usepackage[usestackEOL]{stackengine}
\usepackage[normalem]{ulem}
\usepackage{setspace}
\usepackage{ragged2e}
\newcommand{\lin}{\addfontfeature{Numbers=Lining}}       
\newcommand{\old}{\addfontfeature{Numbers=OldStyle}}       
\usepackage[most]{tcolorbox}
\newtcolorbox{tcbdoublebox}[1][]{%
  enhanced jigsaw,
  sharp corners,
  colback=white,
  borderline={1pt}{-2pt}{black},
  fontupper={\setlength{\parindent}{20pt}},
  #1
}

\begin{document}

\begin{center}
\begin{tcbdoublebox}
\large
MENU DE \lin30\old\ COUVERTS
\linebreak
\linebreak
\normalsize
\centering\textbf{SERVICE A L'ANGLAISE}
\begin{spacing}{1.8}
\noindent\centering{\uwave{\enspace\enspace\enspace\enspace\enspace\enspace\enspace\enspace}}
\end{spacing}
\smallskip
\small
\setlength{\BAextrarowheight}{1pt}
{\RaggedRight
\begin{blockarray}{p{.25\linewidth}p{.25\linewidth}p{.50\linewidth}}
\multicolumn{3}{m{1\textwidth}}{\normalsize\noindent\centering\textsc{premier service}}   \\ 
\addlinespace
\addlinespace
\begin{block}{c c\{l}
       &  2                   & \enspace Turtle-soup, citrons.                            \\
       & \textsc{soupières.}  & \enspace Consommé au vermicelle.                          \\
\end{block}                                                                                                      
\addlinespace                                                                                                    
\begin{block}{c c\{l}                                                                                                      
       &  2                   & \enspace Saumon grillé, sauce Genevoise.                  \\
       & \textsc{poissons.}   & \enspace Merlans frits.                                   \\
\end{block}                                                                                                        
\addlinespace                                                                                                      
\begin{block}{c c\{l}                                                                                                      
       &  2                   & \enspace Quartier de cerf, sauce Romaine.                 \\
       & \textsc{relevés.}    & \enspace Roast-beef et York-pudding.                      \\
\end{block}                                                                                                 
\addlinespace                                                                                               
\begin{block}{c c\{l}                                                                                                      
       &                      & \enspace Rissoles à la moelle.                            \\
       &  4                   & \enspace Poulets au riz.                                  \\
       & \textsc{entrées.}    & \enspace Salmis de grives.                                \\
       &                      & \enspace Timbale de ris d'agneau.                         \\
\end{block}
\addlinespace
\multicolumn{3}{m{1\textwidth}}{\normalsize\noindent\centering\textsc{deuxième service}}  \\ 
\addlinespace
\begin{block}{c c\{l}
       &  2                   & \enspace Dinde truffée, au jus.                           \\
       & \textsc{rôts.}       & \enspace Bécasses rôties, au cresson.                     \\
\end{block}                                                                                                                   
\addlinespace                                                                                                                 
\begin{block}{c c\{l}                                                                                                      
       &  2                   & \enspace Flan de pommes.                                  \\
       & \textsc{relevés.}    & \enspace Baba au madère.                                  \\
\end{block}                                                                                                                   
\addlinespace                                                                                                                 
\begin{block}{c c\{l}                                                                                                      
       &                      & \enspace Langoustes à la Mayonnaise.                      \\
       &  4                   & \enspace Œufs pochés au jus.                              \\
       & \textsc{entremets.}  & \enspace Asperges, sauce au beurre.                       \\
       &                      & \enspace Macédoine aux fruits, garnie de gâteaux.         \\
\end{block}
\addlinespace
\multicolumn{3}{m{1\textwidth}}{\normalsize\noindent\centering\textsc{side-table}} \\ 
\addlinespace
\multicolumn{3}{m{1\textwidth}}{\normalsize\noindent\centering Bœuf salé. — Longes de veau.} \\ 
\addlinespace
\end{blockarray}
}% end raggedright
\end{tcbdoublebox}
\end{center}
\clearpage

\end{document}

Cet exemple devrait normalement pourvoir être compilé sans problème en utilisant xelatex.

Ces pages occupent à peu près une page physique mais il arrive que soit elles débordent sur la page suivante de une ou deux lignes, soit elles sont un peu trop courtes notamment si je choisis de passer la taille du texte de \normalsize à \small (par exemple) auquel cas une partie de la page est vide.

Serait-il possible de demander à latex d'optimiser l'occupation de la page en ajustant automatiquement la taille de la police de caractère et ce quelle que soit la taille de police principale utilisée pour le document (8, 9, 10, 11, 12, 14pt) ? En d'autres termes obtenir de latex qu'il augmente ou réduise la taille de la police utilisée (en respectant les marges) de manière que cette page s'intègre harmonieusement au reste du document. Un peu ce que j'obtiens avec un document html ou epub en utilisant une image de type svg?

Quelle approche recommandez-vous ?

Posée 15 Aoû '20, 20:55

Chris%20Jones%20XL's gravatar image

Chris Jones XL
1911918
Taux d'acceptation : 6%

Modifiée 17 Aoû '20, 07:06

1

Les conditions imposées sont à mon avis contradictoires : adaptation à la page et homogénéité.

Le plus simple est de remplacer la commande \large par une commande \tailledepolice avec

\newcommand{\tailledepolice}{\fontsize{12}{14}\selectfont}

12 taille de la police, 14 interligne. En générale interligne >~= 1.2 * taille de la police.

Pour déterminer ces paramètres vous pouvez commencer par utiliser la commande de changement de taille de la police qui convient ,\large par exemple, puis vérifie avec

\large\makeatletter(\f@size)\makeatother(\the\baselineskip).

(17 Aoû '20, 13:00) touhami touhami's gravatar image

Une autre solution est d'utiliser l'extension adjustbox

\noindent \begin{adjustbox}{width=\textwidth,height=\textheight} Contenu \end{adjustbox}

(17 Aoû '20, 13:00) touhami touhami's gravatar image

@touhami je pense que dans la mesure où le document sera généré dans 6 tailles de polices différentes (8, 9, 10, 11, 12, et 14pt) une solution viable serait de réaliser les ~100 tables que comporte l'original dans des fichiers séparés en utilisant par ex. scalebox{} et setstretch{} afin d'obtenir quelque chose d´à peu près homogène et de les intégrer au moment de la compilation par le biais de includepdf out includegraphics. Cela devrait être gérable ainsi car les six version du document sont toutes à la même geometry (4.8 x 6.4in).

(24 Aoû '20, 22:31) Chris Jones XL Chris%20Jones%20XL's gravatar image

L'idée d'utiliser des fichiers séparés est bonne, bien qu'elle n'est pas obligatoire. En tous les cas pas besoin de compiler 100 fichiers donc soit

\input{fichier1}...

soit

[\newpage ou \par]\noindent \begin{adjustbox}{width=\textwidth,height=\textheight} Contenu \end{adjustbox}

directement dans le fichier principale.

(24 Aoû '20, 22:50) touhami touhami's gravatar image

@touhami je pense que des fichiers individuels avec un norme 'nom de fichier' (à définir) me donnerait peut être plus de souplesse (si je dois par ex. insérer du texte entre les tables, les référencer dans une liste de figures… etc.Par ailleurs cela évite une compilation de 2-3 minutes si je dois corriger une erreur triviale dans une table donnée… [ Hors-sujet : à quoi correspondent ces énigmatiques 'n'oubliez pas d'aller voter' qui concluent les messages 'email' que je reçois dans mon client pour chacun de vos 'commentaires'…? s'agit d'une 'signature' ajoutée par texnique.fr ?]

(24 Aoû '20, 23:18) Chris Jones XL Chris%20Jones%20XL's gravatar image

Tout à fait d'accord ;-)

Pour le point hors-sujet je n'ai aucune idée. @Pathe pourra peut-être nous aider.

(24 Aoû '20, 23:30) touhami touhami's gravatar image
Affichage de 5 parmi 6 Afficher 1 commentaire(s) en plus
Soyez le premier à répondre à cette question !
(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.