使用 tabularx 在文件邊距處打破多列文本

使用 tabularx 在文件邊距處打破多列文本

我在用著表格x在文件邊距處中斷列的內容(參見表格儲存格在文件邊距處換行)。但是當我\multicolumn在這樣的表中使用時,破壞該列中文字的指令將被忽略。我該如何強制執行?

\documentclass{article}
\usepackage{tabularx}

\begin{document}
\newlength{\mylength}
\setlength{\mylength}{\linewidth}
\addtolength{\mylength}{-\parindent}

\hrule
    \begin{tabularx}{\mylength}{lX}
        Lorem ipsum dolor sit amet, consectetuer & adipiscing elit. Ut purus elit, vestibulum ut, placerat ac\\
        \multicolumn{2}{l}{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac}\\
    \end{tabularx}
\hrule

\end{document}

在此輸入影像描述


回答米科的問題:

\documentclass{article}
\usepackage{tabularx}

\begin{document}
\newlength{\mylength}
\setlength{\mylength}{\linewidth}
\addtolength{\mylength}{-\parindent}

\hrule
    \begin{tabularx}{\mylength}{llX}
        Lorem ipsum dolor & sit amet, consectetuer & adipiscing elit. Ut purus elit\\
    \end{tabularx}
\hrule
    \begin{tabularx}{\mylength}{llX}
        Lorem ipsum dolor & sit amet, consectetuer & adipiscing elit. Ut purus elit\\
        Lorem ipsum dolor sit & \multicolumn{2}{p{\mylength}}{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit}\\
    \end{tabularx}
\hrule

\end{document}

在此輸入影像描述

答案1

以下是您的第二個 MWE 的版本。請注意,由於整個環境的寬度tabularx由 給出\mylength,因此您不得使用該參數作為第二列和第三列的組合寬度。為了計算正確的寬度,我使用了兩個額外的長度變數\xlength\ylength\xlength設定為第一列的寬度 (+ 4\tabcolsep);那麼,\ylength計算為\mylength-\xlength

在此輸入影像描述

\documentclass{article}
\usepackage{tabularx}
\hyphenation{ad-ip-is-cing} % no idea if this is correct...

\newlength\xlength
\settowidth\xlength{Lorem ipsum dolor sit}
\addtolength\xlength{4\tabcolsep}

\newlength\mylength
\setlength\mylength{\linewidth}
\addtolength\mylength{-\parindent}

\newlength\ylength
\setlength\ylength\mylength
\addtolength\ylength{-\xlength}

\begin{document}
\hrule
\begin{tabularx}{\mylength}{llX}
Lorem ipsum dolor & sit amet, consectetuer & 
adipiscing elit. Ut purus elit\\
Lorem ipsum dolor sit & 
\multicolumn{2}{p{\ylength}}{Lorem ipsum dolor sit amet, 
    consectetuer adipiscing elit. Ut purus elit}\\
\end{tabularx}
\hrule
\end{document}

附錄OP後續問題的幾個答案:

  • \xlength沿著上面程式碼中給出的線的計算是需要的因為第一列的類型為l,沒有預先指定的寬度。如果您願意將其列類型變更為p,則可以直接使用該列的寬度來計算多個列的寬度。

    例如,如果第一列的寬度由\xlength(由您選擇其值...)給出,您可以tabularx如下啟動環境:

    \begin{tabularx}{\mylength}{p{\xlength}lX}
    

    請注意,\xlength現在純粹是第一列的寬度,即,它不包括術語4\tabcolsep

    然後,稍後在此tabularx環境中,您可以指定兩列的寬度\multicolumn(類型為p,如前面的範例所示),如下所示:

    \multicolumn{2}{p{\dimexpr\mylength-\xlength-4\tabcolsep}}{<stuff>}
    
  • 該項4\tabcolsep

    • 1\tabcolsep在桌子的左邊緣,
    • 2\tabcolsep第 1 列和第 2 列之間的空白量,以及
    • 1\tabcolsep在桌子的右側邊緣。

相關內容