Operatore matematico nel specificare la larghezza della figura in LaTeX

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

  •  05-07-2019
  •  | 
  •  

Domanda

Nelle figure di LaTeX, si può usare \ textwidth e \ columnwidth per specificare le dimensioni del grafico in relazione alle dimensioni del testo circostante, ad es. \ includegraphics [width = 0,5 \ textwidth] {myimage} .

Vorrei passare facilmente da un modello a colonna a un modello a colonna (e viceversa) senza che la figura diventi troppo grande per il modello a colonna. Per il modello a due colonne (dove \ columnwidth è circa la metà di \ textwidth ), vorrei avere qualcosa del tipo: \ includegraphics [width = 0,9 \ ColumnWidth] {myimage} . e per il modello onecolumn (dove \ columnwidth e \ textwidth sono uguali):
\ includegraphics [width = 0,5 \ textwidth] {myimage} .

Ora, ho pensato di poterlo limitare usando una specie di operatore minimo: \ includegraphics [larghezza = min (.5 \ textwidth, .9 \ columnwidth)] {myimage} ma questa è sintassi non valida. Esiste qualcosa del genere per risolvere questo problema, probabilmente attraverso l'uso del sistema macro LaTeX?

È stato utile?

Soluzione

Sebbene sia possibile scrivere questo tipo di macro, non vorrei codificarlo in ogni figura; che ne dici di qualcosa del genere

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

e quindi utilizzare

\includegraphics[width=\figwidth]{myimage}

per inserire l'immagine.

Altri suggerimenti

\ textwidth è la larghezza orizzontale del corpo della pagina e non è davvero appropriata per i tuoi scopi.

\ linewidth è la larghezza della riga corrente; sarà aggiornato in base alle colonne, al rientro, ecc.

Il paragrafo seguente produce un'immagine che dovrebbe adattarsi esattamente all'intera larghezza della linea (cioè nessun avviso eccessivo):

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

Se preferisci piccoli margini a sinistra e a destra, puoi usare:

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

Oppure, se si desidera specificare i margini in una dimensione assoluta:

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

Hmm ... il codice sopra (\ if @ twocolumn ecc.) non funziona affatto per me. Non ho idea del perché no. :( tetex su osX usando fink. Sto provando a usare revtex4, quindi forse questo è il problema. Mi piace molto l'idea di questo tipo di cambiamento perché sto lavorando con larghezze ecc. per la mia tesi e vari articoli di giornale, e avere queste distanze specificate con una macro può essere utile per questi tipi di conversioni.

Qualsiasi commento molto apprezzato! -Allen

Qualcun altro che ha più familiarità con questo probabilmente risponderà, ma tieni presente che dovrai anche cambiare il tipo di figura in figura * se stai andando su due colonne.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top