tabularx를 사용할 때 \여러 열 크기를 계산하는 올바른 방법은 무엇입니까?

tabularx를 사용할 때 \여러 열 크기를 계산하는 올바른 방법은 무엇입니까?

올바른 크기를 얻기 위해 p{}필요한 올바른 크기를 결정하는 올바른 방법은 무엇입니까 ?\multicolumn

문제는 이것이다: 나는 을 사용 tabularx하고 또한 사용하고 싶다 \multicolumn. 그렇게 하려면 \multicolumn에 사용할 정확한 크기를 지정해야 합니다. 그리고 이것이 문제입니다. 하나의 테이블이 다른 테이블 안에 포함될 수 있고 행이 몇 개의 열로 확장되는 복잡한 테이블에서는 계산이 점점 어려워지고 있습니다.

정확한 사이즈를 가늠하기가 더 어려워지고, 나중에 표를 바꾸면 코드도 다시 바꿔야 합니다.

아래 첫 번째 예는 X를 \multicolumn과 함께 사용하여 두 개 이상의 열로 확장할 수 없음을 보여줍니다.

\documentclass[10pt,notitlepage]{article}%
\usepackage{tabularx}
\usepackage{array}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{lipsum}
\setlength{\parindent}{0pt}
\begin{document}

\begin{tabularx}{\textwidth}{@{}|l|Y|@{}}\hline
 column 1 &
 {\begin{tabularx}{\linewidth}{@{}Y|Y|Y@{}}\hline
      \lipsum[75] & \lipsum[75] &  \lipsum[75] \\\hline
      \multicolumn{3}{X}{\lipsum[75]}
  \end{tabularx}
 }
 \\\hline
\end{tabularx}
\end{document}

Mathematica 그래픽

그래서 사용해야합니다 p{}. 다른 어떤 것도 다른 열로 확장할 수 없습니다.

하지만 p사이즈를 원해요. 몇 번의 시행착오 끝에 필요한 크기에 가까워지는 것이 있습니다.

\documentclass[10pt,notitlepage]{article}%
\usepackage{tabularx}
\usepackage{array}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{lipsum}
\setlength{\parindent}{0pt}
\begin{document}

\begin{tabularx}{\textwidth}{@{}|l|Y|@{}}\hline
 column 1 &
 {\begin{tabularx}{\linewidth}{@{}Y|Y|Y@{}}\hline
       \lipsum[75] &  \lipsum[75] &   \lipsum[75] \\\hline
      \multicolumn{3}
        %this calculation below is needed, and not sure if it is correct now
        {p{.9\dimexpr \textwidth-4\arrayrulewidth-8\tabcolsep\relax}}{\lipsum[75]}
  \end{tabularx}
 }
 \\\hline
\end{tabularx}
\end{document}

Mathematica 그래픽

좋아, 이제 더 좋아졌어. 하지만 나중에 뭔가를 바꾸면 .9다른 것으로 바꿔야 할 것 같아요.

문제는 이것이 실제로 Latex에서 어떻게 수행되어야 하는가 하는 것입니다. Latex에는 이 작업을 자동으로 수행할 수 있는 방법이 있어야 하는 것 같습니다. 위에서 수행하는 작업 대신 살펴보아야 할 더 나은 접근 방식이 있습니까?

위의 내용은 작은 예입니다. 나는 tabularx를 사용하고 내부에 다른 tabularx 테이블도 갖고 싶습니다. 그래서 이것은 매우 빨리 복잡해질 수 있습니다.

답변1

여기에는 여러 열이 필요하지 않습니다. 텍스트는 외부 테이블 열의 전체 너비에 해당하는 단락일 뿐입니다. (이전에 언급했듯이 내부 열에는 tabularx를 사용하지 않을 것입니다. 모든 열이 열인 테이블에서는 X열 너비를 미리 알 수 있으므로 tabularx에서 이를 처리하도록 할 필요가 없습니다. 효과가있다).

\documentclass[10pt,notitlepage]{article}%
\usepackage{tabularx}
\usepackage{array}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{lipsum}
\setlength{\parindent}{0pt}
\begin{document}

\begin{tabularx}{\textwidth}{@{}|l|Y|@{}}\hline
 column 1 &
 {\begin{tabularx}{\linewidth}{@{}Y|Y|Y@{}}\hline
       \lipsum[75] &  \lipsum[75] &   \lipsum[75] \\\hline
  \end{tabularx}
 }

\lipsum[75]
 \\\hline
\end{tabularx}
\end{document}

답변2

이는 목표를 달성하는 방법입니다. 각 단일 열의 기본 크기는 입니다 \hsize. 변경하려면 를 사용하세요 >{\setlength\hsize{1\hsize}}. 3열 너비는 \hsize3열을 차지하므로 기본의 3배로 설정해야 합니다 .

여기에 이미지 설명을 입력하세요

암호:

\documentclass[10pt,notitlepage]{article}%
\usepackage{tabularx}
\usepackage{array}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{lipsum}
\setlength{\parindent}{0pt}
\begin{document}

\begin{tabularx}{\textwidth}{@{}|l|Y|@{}}\hline
 column 1 &{
\begin{tabularx}{\linewidth}{Y|Y|Y}%
\lipsum[75] &\lipsum[75] & \lipsum[75] \\ \hline
\multicolumn{3}{>{\centering\setlength\hsize{3\hsize}}Y}{\lipsum[75]}
\end{tabularx}}\\ \hline
\end{tabularx}
\end{document}

관련 정보