
Ich möchte etwas mit tabularx formatieren, wobei die erste Zeile eine Spalte hat, die am linken Rand beginnt, und eine, die am rechten beginnt, und die folgenden Zeilen nur eine Spalte sind, die sich über die gesamte Textbreite erstreckt und Zeilenumbrüche im Text zulässt. Unten ist mein Code:
\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}
Im Bild unten sieht der obere Teil wie erwartet aus, die Spalten der unteren beiden Zeilen sind jedoch nicht zusammengeführt. Wenn ich es mit dem unteren Code versuche, fällt mir zuerst eine Einrückung der 2. und 3. Zeile auf. Kommt das vom Multicolumn-Befehl? Wie ändere ich die Einrückung? Außerdem überschreitet der Text in diesen Zeilen den rechten Seitenrand, wenn ich \textwidth als Breite der p-Spalte verwende. Wenn ich eine Länge verwende, die gleich der Papierbreite abzüglich der Ränder ist, funktioniert es. Was ist hier los? Außerdem freue ich mich über alternative Formatvorschläge.
Antwort1
Sie können verwenden @{}
, um den kleinen (6 pt) horizontalen Leerraum links und rechts einer Tabellenzelle zu entfernen, wie Sie es bereits in Ihrem Tabellencode getan haben. Da der \multicolumn
Befehl diese Einstellung überschreibt, wird die Polsterung wieder hinzugefügt, was zu einer Spalte vom Typ ap führt, die so breit ist wie \textwidth+2\tabcolsep
und bis in den rechten Rand reicht. Um dies zu vermeiden, fügen Sie @{}
Ihrem \multicolumn
Befehl hinzu, wie im folgenden Beispiel gezeigt. Ich habe auch entfernt, @{\extracolsep{\fill}}
da dieser Befehl hier nicht benötigt wird.
Im folgenden Screenshot zeigen die roten Linien die Seitenränder an:
\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}
Antwort2
Aus --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 } \\