Как LaTex вычисляет \linewidth в двухколоночном документе?

Как LaTex вычисляет \linewidth в двухколоночном документе?

Я хочу рассчитать идеальный размер рисунков, которые я экспортирую из R и включаю в документы LaTeX (чтобы размер текста подписей рисунков был в известной пропорции к размеру шрифта итогового документа). Однако для двухколоночных документов я не знаю, как LaTeX вычисляет \linewidth. Есть ли формула для расчета этого? Мне нужно что-то вроде:

(paperwidth - margins)/2 - distance_of_the_columns_as_a_function_of_font_size

Конечно, я мог бы скомпилировать PDF и включить

\the\linewidth

для получения ширины линии текущего документа (которую я затем мог бы вручную предоставить R), но я хочу написать скрипт R, который я мог бы запустить «вслепую» и который автоматически вычислял бы требуемые значения из простого .tex-файла.

Редактировать: Я проверил

\the\columnsep

для статей размером 8pt, 10pt, 11pt и 12pt и документов scrartcl и всегда получал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то \columnwidth, что составляет половину \textwidthпосле вычитания столбца sep (10pt в классе article).

\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

Связанный контент