Wie berechnet LaTex die Zeilenbreite in einem zweispaltigen Dokument?

Wie berechnet LaTex die Zeilenbreite in einem zweispaltigen Dokument?

Ich möchte die ideale Größe von Abbildungen berechnen, die ich aus R exportiere und in LaTeX-Dokumente einbinde (sodass die Textgröße der Abbildungsbeschriftungen in einem bekannten Verhältnis zur Schriftgröße des resultierenden Dokuments steht). Bei zweispaltigen Dokumenten weiß ich jedoch nicht, wie LaTeX die Zeilenbreite berechnet. Gibt es eine Formel, wie man das berechnet? Ich bräuchte so etwas wie:

(paperwidth - margins)/2 - distance_of_the_columns_as_a_function_of_font_size

Natürlich könnte ich das PDF kompilieren und einbinden

\the\linewidth

um die Linienbreite des aktuellen Dokuments zu erhalten (die ich dann manuell an R weitergeben könnte), aber ich möchte ein R-Skript schreiben, das ich „blind“ ausführen kann und das die erforderlichen Werte automatisch aus der einfachen .tex-Datei berechnet.

Edit: Ich habe es getestet

\the\columnsep

für 8pt, 10pt, 11pt und 12pt Artikel und Scrartcl Dokumente und bekam immer10 Punkte, daher gehe ich davon aus, dass der Wert in normalen Fällen konstant ist. Dies macht die Sache ziemlich einfach, da \columnwidthdann gilt:

(\paperwidth - margins - 10pt)/2```

Antwort1

Die Berechnung ist

\def \twocolumn {%
  \clearpage
  \global\columnwidth\textwidth
  \global\advance\columnwidth-\columnsep
  \global\divide\columnwidth\tw@
  \global\hsize\columnwidth
  \global\linewidth\columnwidth

Das ist \linewidthdie \columnwidthHälfte von \textwidth„sep“ nach Abzug der Spalte „10pt“ in der Artikelklasse.

\textwidthwird in jeder Dokumentklasse auf unterschiedliche Weise gesetzt (und wird oft von Paketen wie neu gesetzt geometry). Standardmäßig wird es in articleder Klasse mit der Standardoption gesetzt durch10pt

\if@compatibility
  \if@twocolumn
    \setlength\textwidth{410\p@}
  \else
    \setlength\textwidth{345\p@}
  \fi
\else
  \setlength\@tempdima{\paperwidth}
  \addtolength\@tempdima{-2in}
  \setlength\@tempdimb{345\p@}
  \if@twocolumn
    \ifdim\@tempdima>2\@tempdimb\relax
      \setlength\textwidth{2\@tempdimb}
    \else
      \setlength\textwidth{\@tempdima}
    \fi
  \else
    \ifdim\@tempdima>\@tempdimb\relax
      \setlength\textwidth{\@tempdimb}
    \else
      \setlength\textwidth{\@tempdima}
    \fi
  \fi
\fi
\if@compatibility\else
  \@settopoint\textwidth
\fi

Das sind mehr oder weniger 345pt oder 2in weniger als\paperwidth

verwandte Informationen