Как определить фактическую ширину столбца в документе Latex с двумя столбцами (исключая пространство между столбцами)?

Я хотел бы переопределить и установить значение, соответствующее(\textwidth-\columnsep)/2. Это потому, что я хотел бы использовать эту переопределенную команду внутри табличной среды для управления шириной столбца. Проблема в том, что он игнорирует пространство между столбцами, поэтому не выполняет свою работу.

Вот о чем я говорю. Следующий код компилируется, но дает нежелательный результат.

      \documentclass[twocolumn]{article}
\usepackage{lipsum}
\setlength{\columnsep}{2cm}
\newcommand\testcolwidth{(\textwidth-\columnsep)/2}
\begin{document}
\lipsum
\begin{table}[!h]
\begin{tabular}{p{.25\columnwidth}|p{.75\columnwidth}}
\hline 
col 1 & col 2 
\end{tabular}
\end{table}
\lipsum
\end{document}

Вот как выглядит вывод. Это нежелательно, потому что я не хочу, чтобы эта строка (и таблица) растягивалась в пространство между столбцами.

Я попытался определить ширину столбца с помощью следующей строки:

\newcommand\testcolwidth{(\textwidth-\columnsep)/2}

Это приводит к ошибке при использовании\testcolwidthна месте\columnwidth. Ошибка гласит:Illegal unit of measure (pt inserted)

Любая помощь? Большое спасибо.

1 ответ

Ширина столбца уже учитывает пространство между столбцами статьи, чего не хватает в вашем коде, так это tabcolsep, который определяет пространство между столбцами таблицы. В вашем примере это пространство добавляется четыре раза: один раз в начале, один раз в конце и один раз на каждом сайте.|. Если вы хотите вручную определить свою таблицу таким образом, вам нужно заранее знать, сколько столбцов она будет иметь:

      \documentclass[twocolumn]{article}
\usepackage{lipsum}
\setlength{\columnsep}{2cm}
\newcommand\testcolwidth{\dimexpr\columnwidth-4\tabcolsep}
\begin{document}
\lipsum
\begin{table}[!h]
\begin{tabular}{p{.25\testcolwidth}|p{.75\testcolwidth}}
\hline 
col 1 & col 2 
\end{tabular}
\end{table}
\lipsum
\end{document}

Гораздо проще позволить пакету вроде tabularray сделать всю работу за вас:

      \documentclass[twocolumn]{article}

\usepackage{tabularray}
\usepackage{lipsum}

\begin{document}
\lipsum[2]
\begin{table}[!h]
\begin{tblr}{
  colspec={X[1]|X[3]}
}
\hline
col 1 & col 2 
\end{tblr}
\end{table}
\lipsum[2]
\end{document}

Другие вопросы по тегам