테이블에서 텍스트를 강제로 분할하도록 수정하는 방법은 무엇입니까?

테이블에서 텍스트를 강제로 분할하도록 수정하는 방법은 무엇입니까?

LibreOffice calc에 간단한 테이블이 있고 Calc2Latex 매크로를 사용하여 이를 라텍스로 변환하려고 했습니다.

그런 다음 Latex를 사용하여 개선하려고 노력했습니다. 그러나 텍스트를 올바르게 가져올 수 없습니다!

이것이 내가 테이블에 있는 텍스트와 같기를 원하는 것입니다. 여기에 이미지 설명을 입력하세요

예를 들어 첫 번째 열에는 "소스별 분당 메시지"가 구분됩니다.

그러나 내 라텍스 생성 테이블에서는 그런 일이 발생하지 않습니다! 그것은 모두 큰 혼란입니다. 여기에 이미지 설명을 입력하세요

다음을 사용하여 문제를 해결해 보았 tabularx으나 사용하지 말아야 할 내용을 읽었습니다.multicolumn 지만 아직 초보자이고 이 문제를 해결하는 방법을 모르겠습니다!

내 MWE는 다음과 같습니다.

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{microtype}
\usepackage[margin=2.54cm]{geometry}
\usepackage{graphicx,booktabs,tabularx}
\usepackage[table]{xcolor}
\usepackage{array}

%define some nice colors
\definecolor{middleware_green}{RGB}{82, 119, 17}
\definecolor{middleware_white}{RGB}{255, 255, 255}
\definecolor{middleware_light_gray}{RGB}{239, 239, 239}
\definecolor{middleware_dark_gray}{RGB}{153, 153, 153}

\renewcommand{\tabularxcolumn}[1]{>{\small}m{#1}}
\newcolumntype{F}{|>{\leavevmode\ignorespaces\raggedright\sffamily\bfseries}p{2.5cm}}%
\newcolumntype{R}{|>{\leavevmode\ignorespaces\raggedright\arraybackslash\sffamily}X}%
\newcolumntype{L}{|>{\leavevmode\ignorespaces\raggedleft\arraybackslash\sffamily}X}%
\newcolumntype{C}{|>{\leavevmode\ignorespaces\centering\arraybackslash\sffamily}X|}%
\rowcolors{2}{middleware_white}{middleware_light_gray}

\begin{document}

\begin{table}[htbp]

\begin{tabularx}{\textwidth}{|R|L|L|L|}
\hline\rowcolor{middleware_green}
\multicolumn{ 4}{|c|}{\textcolor{white}{\textbf{1 Source, 1 Session, 1 Client, Exp0}}} \\ \hline
\multicolumn{1}{|c|}{\textbf{Messages per minute per source}} & \multicolumn{1}{c|}{\textbf{Middleware Exec Time (s)}} & \multicolumn{1}{c|}{\textbf{Delay (s)}} & \multicolumn{1}{c|}{\textbf{Average Delay (s)}} \\ \hline
\multicolumn{ 1}{|r|}{60} & 60 & 0 & \multicolumn{ 1}{r|}{0.00} \\ \cline{ 2- 3}
\multicolumn{ 1}{|l|}{} & 60 & 0 & \multicolumn{ 1}{l|}{} \\ \cline{ 2- 3}
\multicolumn{ 1}{|l|}{} & 60 & 0 & \multicolumn{ 1}{l|}{} \\ \hline
\multicolumn{ 1}{|r|}{120} & 60 & 0 & \multicolumn{ 1}{r|}{0.00} \\ \cline{ 2- 3}
\multicolumn{ 1}{|l|}{} & 60 & 0 & \multicolumn{ 1}{l|}{} \\ \cline{ 2- 3}
\multicolumn{ 1}{|l|}{} & 60 & 0 & \multicolumn{ 1}{l|}{} \\ \hline
\multicolumn{ 1}{|r|}{240} & 60 & 0 & \multicolumn{ 1}{r|}{0.00} \\ \cline{ 2- 3}
\multicolumn{ 1}{|l|}{} & 60 & 0 & \multicolumn{ 1}{l|}{} \\ \cline{ 2- 3}
\multicolumn{ 1}{|l|}{} & 60 & 0 & \multicolumn{ 1}{l|}{} \\ \hline
\multicolumn{ 1}{|r|}{480} & 69 & 9 & \multicolumn{ 1}{r|}{16.67} \\ \cline{ 2- 3}
\multicolumn{ 1}{|l|}{} & 69 & 9 & \multicolumn{ 1}{l|}{} \\ \cline{ 2- 3}
\multicolumn{ 1}{|l|}{} & 92 & 32 & \multicolumn{ 1}{l|}{} \\ \hline
\multicolumn{ 1}{|r|}{1000} & 159 & 99 & \multicolumn{ 1}{r|}{109.67} \\ \cline{ 2- 3}
\multicolumn{ 1}{|l|}{} & 173 & 113 & \multicolumn{ 1}{l|}{} \\ \cline{ 2- 3}
\multicolumn{ 1}{|l|}{} & 177 & 117 & \multicolumn{ 1}{l|}{} \\ \hline
\multicolumn{ 1}{|r|}{2000} & 391 & 331 & \multicolumn{ 1}{r|}{311.00} \\ \cline{ 2- 3}
\multicolumn{ 1}{|l|}{} & 383 & 323 & \multicolumn{ 1}{l|}{} \\ \cline{ 2- 3}
\multicolumn{ 1}{|l|}{} & 339 & 279 & \multicolumn{ 1}{l|}{} \\ \hline
\multicolumn{ 1}{|r|}{4000} & 561 & 501 & \multicolumn{ 1}{r|}{512.33} \\ \cline{ 2- 3}
\multicolumn{ 1}{|l|}{} & 631 & 501 & \multicolumn{ 1}{l|}{} \\ \cline{ 2- 3}
\multicolumn{ 1}{|l|}{} & 595 & 535 & \multicolumn{ 1}{l|}{} \\ \hline
\end{tabularx}

\label{}
\caption{}
\end{table}


\end{document}

내가 열을 더 작게 만들고 싶은 주된 이유는 공간을 덜 차지하기 때문입니다. 따라서 열 옆에 텍스트를 넣거나 테이블 2개를 나란히 놓을 수 있기를 바랍니다!

답변1

X을 사용하면 내용이 중단될 수 있지만 그렇게 하면 \multicolumn{1}{c}{Lots of text}해당 열 지정자를 재정의합니다. 그러면 셀이 열로 작동하므로 c줄 바꿈이 허용되지 않습니다.

줄 바꿈을 허용하면서 열 제목을 중앙에 맞추고 열의 나머지 부분을 오른쪽으로 정렬하려면 열에 a를 사용하세요 \multicolumn( C예: ) \multicolumn{1}{C}{\textbf{Messages per minute per source}}.

나머지 것들은 \multicolumn{1}{..제거해도 될 것 같아요. 아래의 전체 코드에는 수직선이 있는 테이블이 하나 있고 없는 테이블이 있습니다. 없는 것을 사용해도 될 것 같지만 결정은 여러분의 몫으로 남겨두겠습니다.

이 테이블은 에 설정되어 있으므로 0.45\textwidth조금 더 넓을 수 있고 서로 옆에 두 사람이 앉을 수 있는 공간이 여전히 있을 수 있습니다. 그것이 필요하지 않다면 물론 훨씬 더 넓을 수도 있습니다.

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

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{microtype}
\usepackage[margin=2.54cm]{geometry}
\usepackage{graphicx,booktabs,tabularx}
\usepackage[table]{xcolor}
\usepackage{array}

%define some nice colors
\definecolor{middleware_green}{RGB}{82, 119, 17}
\definecolor{middleware_white}{RGB}{255, 255, 255}
\definecolor{middleware_light_gray}{RGB}{239, 239, 239}
\definecolor{middleware_dark_gray}{RGB}{153, 153, 153}

\renewcommand{\tabularxcolumn}[1]{>{\small}m{#1}}
\newcolumntype{F}{>{\leavevmode\ignorespaces\raggedright\sffamily\bfseries}p{2.5cm}}%
\newcolumntype{R}{>{\leavevmode\ignorespaces\raggedright\arraybackslash\sffamily}X}%
\newcolumntype{L}{>{\leavevmode\ignorespaces\raggedleft\arraybackslash\sffamily}X}%
\newcolumntype{C}{>{\leavevmode\ignorespaces\centering\arraybackslash\sffamily}X}%
\rowcolors{2}{middleware_white}{middleware_light_gray}

\begin{document}

\begin{table}
\centering
\begin{tabularx}{.45\textwidth}{LLLL}
\hline\rowcolor{middleware_green}
\multicolumn{4}{|c|}{\textcolor{white}{\textbf{1 Source, 1 Session, 1 Client, Exp0}}} \\ \hline
\multicolumn{1}{C}{\textbf{Messages per minute per source}} &
\multicolumn{1}{C}{\textbf{Middle\-ware Exec Time (s)}} &
\multicolumn{1}{C}{\textbf{Delay (s)}} &
\multicolumn{1}{C}{\textbf{Average Delay (s)}} \\ \hline
60 & 60 & 0 & 0.00 \\ \cline{ 2- 3}
 & 60 & 0 &  \\ \cline{ 2- 3}
 & 60 & 0 &  \\ \hline
120 & 60 & 0 & 0.00 \\ \cline{ 2- 3}
 & 60 & 0 &  \\ \cline{ 2- 3}
 & 60 & 0 &  \\ \hline
240 & 60 & 0 & 0.00 \\ \cline{ 2- 3}
 & 60 & 0 &  \\ \cline{ 2- 3}
 & 60 & 0 &  \\ \hline
480 & 69 & 9 & 16.67 \\ \cline{ 2- 3}
 & 69 & 9 &  \\ \cline{ 2- 3}
 & 92 & 32 &  \\ \hline
1000 & 159 & 99 & 109.67 \\ \cline{ 2- 3}
 & 173 & 113 &  \\ \cline{ 2- 3}
 & 177 & 117 &  \\ \hline
2000 & 391 & 331 & 311.00 \\ \cline{ 2- 3}
 & 383 & 323 &  \\ \cline{ 2- 3}
 & 339 & 279 &  \\ \hline
4000 & 561 & 501 & 512.33 \\ \cline{ 2- 3}
 & 631 & 501 &  \\ \cline{ 2- 3}
 & 595 & 535 &  \\ \hline
\end{tabularx}
\begin{tabularx}{.45\textwidth}{|L|L|L|L|}
\hline\rowcolor{middleware_green}
\multicolumn{4}{|c|}{\textcolor{white}{\textbf{1 Source, 1 Session, 1 Client, Exp0}}} \\ \hline
\multicolumn{1}{|C|}{\textbf{Messages per minute per source}} &
\multicolumn{1}{C|}{\textbf{Middle\-ware Exec Time (s)}} &
\multicolumn{1}{C|}{\textbf{Delay (s)}} &
\multicolumn{1}{C|}{\textbf{Average Delay (s)}} \\ \hline
60 & 60 & 0 & 0.00 \\ \cline{ 2- 3}
 & 60 & 0 &  \\ \cline{ 2- 3}
 & 60 & 0 &  \\ \hline
120 & 60 & 0 & 0.00 \\ \cline{ 2- 3}
 & 60 & 0 &  \\ \cline{ 2- 3}
 & 60 & 0 &  \\ \hline
240 & 60 & 0 & 0.00 \\ \cline{ 2- 3}
 & 60 & 0 &  \\ \cline{ 2- 3}
 & 60 & 0 &  \\ \hline
480 & 69 & 9 & 16.67 \\ \cline{ 2- 3}
 & 69 & 9 &  \\ \cline{ 2- 3}
 & 92 & 32 &  \\ \hline
1000 & 159 & 99 & 109.67 \\ \cline{ 2- 3}
 & 173 & 113 &  \\ \cline{ 2- 3}
 & 177 & 117 &  \\ \hline
2000 & 391 & 331 & 311.00 \\ \cline{ 2- 3}
 & 383 & 323 &  \\ \cline{ 2- 3}
 & 339 & 279 &  \\ \hline
4000 & 561 & 501 & 512.33 \\ \cline{ 2- 3}
 & 631 & 501 &  \\ \cline{ 2- 3}
 & 595 & 535 &  \\ \hline
\end{tabularx}
\caption{Look, two tables!}
\end{table}
\end{document}

답변2

makecell비록 완벽하지는 않지만 나는 이 솔루션을 제안합니다 . 하지만 코드가 훨씬 더 간결하기 때문에 흥미로운 것 같습니다.

색상에 문제가 있습니다. 처음 두 행은 괜찮지만 다음 행은 완전히 색상이 지정되지 않았습니다. 코드가 두 번째 행의 코드와 근본적으로 다르지 않기 때문에 이해할 수 없는 이유입니다(명령 교체를 테스트했습니다) \multirow. \makecell결과 테이블에는 아무런 변화 없이 4번째 행에 가 포함됩니다 ).

그래서 누가 문제가 무엇인지 설명할 수 있다면…

    \documentclass[a4paper,10pt]{article}
    \usepackage[utf8]{inputenc}
    \usepackage{microtype}
    \usepackage[margin=2.54cm]{geometry}
    \usepackage{graphicx,tabularx}%booktabs,
    \usepackage{array}

    %define some nice colors
    \usepackage[font = sf]{caption}
    \usepackage{makecell}
    \renewcommand{\theadfont}{\bfseries}
    \renewcommand{\cellalign}{rc}

    \usepackage[table, svgnames]{xcolor}
    \definecolor{middleware_green}{RGB}{82, 119, 17}
    \definecolor{middleware_white}{RGB}{255, 255, 255}
    \definecolor{middleware_light_gray}{RGB}{239, 239, 239}
    \definecolor{middleware_dark_gray}{RGB}{153, 153, 153}
    \usepackage{colortbl}
    \rowcolors{2}{White}{Olive!15!}
    \begin{document}

    \begin{table}[htbp]
    \sffamily\centering
    \label{}
    \caption{}
    \begin{tabular}{|r|r|r|r|}%
    \hline\rowcolor{middleware_green}
    \multicolumn{ 4}{|c|}{\Gape[8pt]{\textcolor{white}{\textbf{1 Source, 1 Session, 1 Client, Exp0}}}} \\ %
    \hline%
    \makecell*{Messages\\ per minute\\ per source} & \makecell{Middleware Exec\\ Time (s)} & \makecell{Delay (s)}& \makecell{Average\\ Delay (s)} \\
    \hline
    \multirowcell{3}{360} & \makecell{60\\ 60\\60} & \makecell{0\\0\\0} & \multirowcell{3}{0.00} \\
     \hline\rowcolor{Olive!20!}%%
     \multirowcell{3}{120} & \makecell*{60\\60\\60} & \makecell{0\\0\\0} & \multirowcell{3}{0.00} \\%
    \hline
    \multirowcell{3}{240} & \makecell*{60\\60\\60} & \makecell{0\\0\\0} & \multirowcell{3}{0.00} \\
    \hline
    \multirowcell{3}{480} & \makecell*{69\\69\\92} & \makecell{9\\9\\32}& \multirowcell{3}{16.67} \\
    \hline
    \multirowcell{3}{1000} & \makecell*{159\\173\\177} & \makecell{99\\113\\117} & \multirowcell{3}{109.67} \\
    \hline
    \multirowcell{3}{2000} & \makecell*{391\\383\\339} & \makecell{331\\323\\279} & \multirowcell{3}{311.00} \\
    \hline
    \multirowcell{3}{4000} & \makecell*{561\\631\\595} & \makecell{501\\501\\535} & \multirowcell{3}{512.33} \\
    \hline
    \end{tabular}
    \end{table}

    \end{document} 

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

관련 정보