Como o LaTex calcula \linewidth em um documento de duas colunas?

Como o LaTex calcula \linewidth em um documento de duas colunas?

Quero calcular o tamanho ideal das figuras que exporto do R e incluo em documentos LaTeX (para que o tamanho do texto dos rótulos das figuras esteja em uma proporção conhecida com o tamanho da fonte do documento resultante). Entretanto, para documentos de duas colunas eu não sei como o LaTeX calcula \linewidth. Existe uma fórmula sobre como calcular isso? Eu precisaria de algo como:

(paperwidth - margins)/2 - distance_of_the_columns_as_a_function_of_font_size

Claro, eu poderia compilar o pdf e incluir

\the\linewidth

para obter a largura de linha do documento atual (que eu poderia fornecer manualmente para R), mas quero escrever um script R que possa ser executado "às cegas" e que calcule automaticamente os valores necessários do arquivo .tex simples.

Editar: eu testei

\the\columnsep

para artigos de 8pt, 10pt, 11pt e 12pt e documentos scartcl e sempre obtive10 pontos, portanto, presumo que o valor seja constante para casos regulares. Isso tornará as coisas bastante fáceis, pois \columnwidthserá:

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

Responder1

O cálculo é

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

Isto é, \linewidtha \columnwidthmetade \textwidthdepois de subtrair a coluna sep (10pt na classe do artigo).

\textwidthé definido em cada classe de documento de maneiras diferentes (e muitas vezes é redefinido por pacotes como geometry) por padrão, na articleclasse com a opção padrão 10ptele é definido por

\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

que é mais ou menos 345pt ou 2in menor que\paperwidth

informação relacionada