Opérateur mathématique spécifiant la largeur de la figure dans LaTeX

StackOverflow https://stackoverflow.com/questions/622502

  •  05-07-2019
  •  | 
  •  

Question

Dans les figures LaTeX, on peut utiliser \ textwidth et \ columnwidth pour spécifier les tailles du graphique par rapport à la taille du texte environnant, par exemple. \ includegraphics [width = .5 \ textwidth] {mon image} .

J'aimerais passer facilement d'un modèle à une colonne à un modèle à deux colonnes (et inversement) sans que la figure ne devienne trop grande pour un modèle à une colonne. Pour un modèle à deux colonnes (où \ columnwidth correspond à peu près à la moitié de \ textwidth ), j'aimerais avoir quelque chose comme: \ includegraphics [width = .9 \ columnwidth] {mon image} . et pour le modèle onecolumn (où \ columnwidth et \ textwidth sont égaux):
\ includegraphics [width = .5 \ textwidth] {mon image} .

Maintenant, je pensais pouvoir limiter ceci en utilisant une sorte d’opérateur min: \ includegraphics [width = min (.5 \ textwidth, .9 \ columnwidth)] {myimage} mais il s’agit d’une syntaxe non valide. Y a-t-il quelque chose comme ceci pour résoudre ce problème, éventuellement en utilisant le système de macro LaTeX?

Était-ce utile?

La solution

Bien qu'il soit possible d'écrire ce type de macro, je ne voudrais pas le coder en dur dans chaque figure; que diriez-vous de quelque chose comme ça

\makeatletter
\newlength \figwidth
\if@twocolumn
  \setlength \figwidth {0.9\columnwidth}
\else
  \setlength \figwidth {0.5\textwidth}
\fi
\makeatother

puis utilisez

\includegraphics[width=\figwidth]{myimage}

pour insérer le graphique.

Autres conseils

\ textwidth correspond à la largeur horizontale du corps de la page et n'est pas vraiment adapté à vos besoins.

\ linewidth est la largeur de la ligne en cours; il sera mis à jour en fonction des colonnes, de l'indentation, etc.

Le paragraphe suivant génère une image qui doit correspondre exactement à toute la largeur de la ligne (c.-à-d. aucun avertissement excessif):

\noindent\includegraphics[width=\linewidth]{myimage}

Si vous préférez les petites marges à gauche et à droite, vous pouvez utiliser:

\begin{center}
\includegraphics[width=.9\linewidth]{myimage}
\end{center}

Ou, si vous souhaitez spécifier les marges dans une taille absolue:

\usepackage{calc}
...
\begin{center}
\includegraphics[width=\linewidth-20pt]{myimage}
\end{center}

Hmm ... le code ci-dessus (\ if @ twocolumn etc.) ne fonctionne pas du tout pour moi. Aucune idée pourquoi pas. :( tetex sur osX avec fink. Essayer d’utiliser revtex4, c’est peut-être le problème. J'aime beaucoup l’idée de ce type de changement car je vais utiliser des largeurs, etc. pour ma thèse et divers articles de revues, et avoir ces distances spécifiées avec une macro peut être utile pour ces types de conversions.

Tous les commentaires ont été grandement appréciés! -Allen

Quelqu'un d’autre, qui est plus familier avec cette question, répondra probablement, mais notez que vous devrez également changer votre type de figure pour qu’il s’agisse de figure * si vous utilisez deux colonnes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top