tabularx を使用して複数列のテキストをドキュメントの余白で分割する

tabularx を使用して複数列のテキストをドキュメントの余白で分割する

私は使用していますタブラックスドキュメントの余白で列の内容を分割します (cf.文書の余白にある表のセルの改行\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}

ここに画像の説明を入力してください


Mico さんの質問に答えて:

\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

以下は、2 番目の MWE のバージョンです。tabularx環境全体の幅は で指定されるため\mylength、2 列目と 3 列目の合計幅にそのパラメータを使用してはならないことに注意してください。正しい幅を計算するために、2 つの追加の長さ変数 と を使用します\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環境では、2 列の幅(前の例のように、\multicolumn型) を次のように指定できます。p

    \multicolumn{2}{p{\dimexpr\mylength-\xlength-4\tabcolsep}}{<stuff>}
    
  • この項4\tabcolsepは、

    • 1\tabcolsepテーブルの左端に
    • 2\tabcolsep1列目と2列目の間の空白の量、および
    • 1\tabcolsepテーブルの右端にあります。

関連情報