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}