2009-03-07 6 views
15

In LaTeX-Figuren kann man \textwidth und \columnwidth verwenden, um Größen der Grafik relativ zur Größe des umgebenden Texts anzugeben, z. \includegraphics[width=.5\textwidth]{myimage}.Mathematischer Operator beim Spezifizieren der Bildbreite in LaTeX

Ich möchte leicht von einer Spalte zu zwei Spaltenvorlage (und zurück) wechseln, ohne dass die Zahl zu groß für Onecolumn Vorlage wächst. Für zwei Spalten Vorlage (wo \columnwidth ist etwa die Hälfte der \textwidth), würde ich gerne etwas wie haben: \includegraphics[width=.9\columnwidth]{myimage}. und für die Ein-Spalten-Vorlage (wobei \columnwidth und \textwidth gleich sind):
\includegraphics[width=.5\textwidth]{myimage}.

Nun dachte ich, ich könnte dies mit einer Art von einem min-Operator beschränken: \includegraphics[width=min(.5\textwidth,.9\columnwidth)]{myimage} aber das ist ungültige Syntax. Gibt es so etwas, um dieses Problem zu lösen, möglicherweise durch den Einsatz des LaTeX-Makrosystems?

Antwort

17

Obwohl es möglich ist, diese Art von Makro zu schreiben, würde ich es nicht in jede Figur fest codieren wollen; wie wäre es so etwas wie dieses

\makeatletter 
\newlength \figwidth 
\[email protected] 
    \setlength \figwidth {0.9\columnwidth} 
\else 
    \setlength \figwidth {0.5\textwidth} 
\fi 
\makeatother 

und dann

\includegraphics[width=\figwidth]{myimage} 

verwenden, um die Grafik einzufügen.

+1

Sollte \ if @ twocumum sein, aber ansonsten eine gute Antwort. – ChrisN

+0

Ha, ausgezeichnet! Das sieht viel schöner aus als einige seltsame Antworten, die ich online gefunden habe. Vielen Dank! – mbudisic

+0

Jetzt habe ich es getestet und es hat mit zwei Änderungen funktioniert: erstens die bereits erwähnte '@ twocolumn'. Zweitens musste '\ linewidth' in' \ textwidth' geändert werden, ansonsten wurde das Bild nur im zweiszentigen Modus angezeigt. Der Vollständigkeit halber verwende ich das IEEEtran-Template, das von IEEE-Zeitschriften und -Konferenzen verwendet wird. Vielen Dank! – mbudisic

0

Jemand anders, der damit vertrauter ist, wird wahrscheinlich antworten, aber beachte, dass du auch deinen Figurentyp auf Figur * ändern musst, wenn du zweispaltig gehst.

+0

ich dies keine negativen Auswirkungen, ohne zu sehen bin nicht tun hilfreich sein. können Sie erklären, warum man tun würde, das? – mbudisic

+0

OK, ich habe http://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions#Wide_figures_in_two_column_documents gelesen, um zu sehen, was Sie meinen.Beachten Sie, dass meine Zahlen im Zweispaltenmodus in eine einzelne Spalte passen und im Einspaltenmodus gestreckt werden sollen, aber nicht so, dass sie die gesamte Seitenbreite einnehmen. – mbudisic

4

\textwidth ist die horizontale Breite des Seitenkörpers und nicht wirklich für Ihre Zwecke geeignet.

\linewidth ist die Breite der aktuellen Zeile; es wird angemessen Spalten, Einzüge aktualisiert werden usw.

Der folgende Absatz erzeugt ein Bild, das die gesamte Linienbreite (dh keine overful Warnung) genau passen sollte:

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

Wenn Sie auf kleine Margen bevorzugen die linke und rechte Seite können Sie verwenden:

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

Oder, wenn Sie die Ränder in einer absoluten Größe angeben mögen:

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

\ linienbreite ist perfekt! – goweon

1

Hmm ... der obige Code (\ if @ twocumumn etc.) funktioniert bei mir überhaupt nicht. Keine Ahnung warum nicht. :(tetex auf osX mit fink. versuch, revtex4 zu benutzen, also vielleicht ist das das problem. ich mag die idee dieser art von änderung, weil ich mit breiten etc. für meine thesis und verschiedene zeitungsartikel arbeiten werde, und diese Abstände mit einem Makro angegeben haben, können für diese Art von Konvertierungen.

alle Kommentare sehr zu schätzen! -Innensechskant

+1

Welchen Fehler bekommen Sie? Schützen Sie diesen Code mit '\ makeatletter'? –

+0

Yup, fügte es wie oben hinzu und benutzte es als Beispiel - keine Liebe. Ich denke es ist wahrscheinlich, dass Revtex4 mit mir spielt. Ich werde versuchen, eine Beispielartikel-Klasse, die ich hinzufügen sollte kein Fehler wurde geworfen - es ignoriert nur den Befehl vollständig. Ich werde es bald nochmal versuchen und zurück posten. Danke für die Nachfrage! – AllenH

+0

Ok, fummelt wieder mit. Mit revtex4, tetex und pdftex - und das kann nicht funktionieren. Ich erhalte eine undefinierte Kontrollsequenz. Fehler. Ich habe eine Reihe von verschiedenen Optionen in der Größe versucht, verwendet (dh Textbreite, column, Linienbreite und verschiedene Möglichkeiten, die \ setlength Betreiber machen (mit geschweiften Klammern, ohne Klammern etc.). Nur das nicht immer funktioniert. :(Vielleicht es funktioniert nur mit Artikelklasse? – AllenH