LaTex は 2 列のドキュメントで \linewidth をどのように計算するのでしょうか?

LaTex は 2 列のドキュメントで \linewidth をどのように計算するのでしょうか?

R からエクスポートして LaTeX ドキュメントに含める図の理想的なサイズを計算したい (つまり、図のラベルのテキスト サイズが、結果のドキュメントのフォント サイズと既知の比率になるようにしたい)。ただし、2 列のドキュメントの場合、LaTeX が \linewidth をどのように計算するかがわかりません。これを計算する式はありますか? 次のような式が必要です。

(paperwidth - margins)/2 - distance_of_the_columns_as_a_function_of_font_size

もちろん、PDFをコンパイルして含めることもできます

\the\linewidth

現在のドキュメントの線幅を取得するには (これを手動で R に提供できます)、"盲目的に" 実行でき、プレーンな .tex ファイルから必要な値を自動的に計算する R スクリプトを作成したいと考えています。

編集:テストしました

\the\columnsep

8pt、10pt、11pt、12ptの記事とscratchcl文書で常に10ポイントしたがって、通常のケースでは値は一定であると仮定します。これにより、物事はかなり簡単になります。なぜなら、\columnwidth次のようになるからです。

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

答え1

計算は

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

つまり、\linewidth列の sep (記事クラスでは 10pt) を減算した後の\columnwidth半分になります。\textwidth

\textwidthは各ドキュメントクラスで異なる方法で設定されます(多くの場合、などのパッケージによって再設定されますgeometry)。デフォルトでは、articleデフォルト10ptオプションを持つクラスでは次のように設定されます。

\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

これはおよそ345ptまたは2インチ小さい\paperwidth

関連情報