Как определить фактическую ширину столбца в документе 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}