
Я хотел бы отформатировать что-то с помощью tabularx, где первая строка имеет столбец, начинающийся с левого поля, и один, начинающийся с правого, а следующие строки представляют собой только один столбец, охватывающий всю ширину текста, позволяя переносы строк в тексте. Ниже приведен мой код:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{multicol}
\usepackage{tabularx}
\begin{document}
\section{Introduction}
\begin{flushleft}
\begin{tabularx}{\textwidth}{@{}X @{\extracolsep{\fill}} r @{}}
Text beginning at left margin & Something at right margin \\
\hline
Here is some text that can get longer and longer until it causes a linebreak eventually & \\
\textit{Some closing text that would go to the next line soon because of the cell to the right} & \\
\end{tabularx}
\end{flushleft}
\begin{flushleft}
\begin{tabularx}{\textwidth}{@{}X @{\extracolsep{\fill}} r @{}}
Text beginning at left margin & Something at right margin \\
\hline
\multicolumn{2}{p{\textwidth}}{Here is some longer sentence that goes past the original column on the right } \\
\multicolumn{2}{p{\textwidth}}{\textit{Here is some text that can get longer and longer and longer and longer and longer until it causes a linebreak eventually}} \\
\end{tabularx}
\end{flushleft}
\end{document}
На рисунке ниже верхняя часть выглядит так, как и ожидалось, однако нижние две строки не имеют объединенных столбцов. Когда я пытаюсь сделать это с помощью нижнего кода, я сначала замечаю отступ 2-й и 3-й строки. Это происходит из-за команды multicolumn? Как мне изменить отступ? Кроме того, текст в этих строках выходит за пределы правого поля страницы при использовании \textwidth в качестве ширины столбца p. Если я указываю длину, которая равна верхней ширине бумаги минус поля, это работает. Что здесь происходит? Кроме того, я рад альтернативным предложениям по форматированию.
решение1
Вы можете использовать @{}
для того, чтобы удалить небольшое (6 пт) горизонтальное пустое пространство слева и справа от ячейки таблицы, как вы уже сделали в коде таблицы. Поскольку команда \multicolumn
переопределяет эту настройку, отступ добавляется обратно, в результате чего получается столбец типа ap, ширина которого равна , \textwidth+2\tabcolsep
и он заходит на правое поле. Чтобы обойти это, добавьте @{}
к своей \multicolumn
команде, как показано в следующем примере. Я также удалил, @{\extracolsep{\fill}}
поскольку эта команда здесь не нужна.
На следующем снимке экрана красные линии обозначают поля страницы:
\documentclass{article}
%\usepackage[utf8]{inputenc} % default in an up to date installation
%\usepackage{multicol} % Not related to the \multicolumn command
\usepackage{tabularx}
\begin{document}
\section{Introduction}
\noindent
\begin{tabularx}{\textwidth}{@{} X r @{}}
Text beginning at left margin & Something at right margin \\
\hline
\multicolumn{2}{@{}p{\textwidth}@{}}{Here is some longer sentence that goes past the original column on the right } \\
\multicolumn{2}{@{}p{\textwidth}@{}}{\textit{Here is some text that can get longer and longer and longer and longer and longer until it causes a linebreak eventually}} \\
\end{tabularx}
\end{document}
решение2
От --https://latex.org/forum/viewtopic.php?t=8352
\multicolumn{2}{@{}p{\textwidth}}{Here is some longer sentence that goes past the
original column on the right } \\