테이블의 열 사이의 간격을 어떻게 줄일 수 있나요?

테이블의 열 사이의 간격을 어떻게 줄일 수 있나요?

답변이 모두 다른 유사한 질문이 있지만 내가 원하는 것을 달성하는 질문을 찾을 수 없습니다. 아래 표에서는 숫자 사이의 간격이 너무 넓습니다. 어떻게 하면 조금 줄일 수 있나요?

\newcommand{\testmode}[2] {
    \begin{tabular}{c}
        \textbf{#1} \\ \textbf{d=#2}
    \end{tabular}
}

\begin{table}[ht]
\begin{tabular}{l | c c c | c c c |}
\cline{2-7}
          & \multicolumn{3}{c|}{\textbf{Single}} & \multicolumn{3}{c|}{\textbf{Double}} \\
\cline{2-7}
          & \testmode{Scalar}{1} & \testmode{SSE-4}{4} & \testmode{AVX-2}{8} & \testmode{Scalar}{1} & \testmode{SSE-4}{2} & \testmode{AVX-2}{4} \\
\hline
\multicolumn{1}{|c|}{\textbf{Eytzinger}                        } &     209.86 &     370.18 &     411.25 &     180.85 &     245.37 &     262.61 \\
\multicolumn{1}{|c|}{\textbf{Classic Offset}                    } &     213.28 &     363.35 &     476.10 &     209.04 &     247.02 &     208.63 \\
\hline
\end{tabular}
\caption{Throughput in millions of searches per second with vector $X$ of size 15}
\label{tab:results0}
\end{table}

답변1

tabular귀하의 예에서는 내부를 사용하여 열 구분을 두 배로 늘렸습니다 tabular. 참고: LaTeX는 \tabcolsep각 열 앞뒤 에 거리를 추가합니다 . 귀하의 경우에는 내부 표의 열 전후 \testmode와 외부 표의 열 전후에 그러한 거리가 있습니다. 이를 방지하려면 @{}내부 표의 첫 번째 열 앞과 내부 표의 마지막 열 뒤에 다음을 추가해야 합니다.

\documentclass{article}

\begin{document}
\newcommand{\testmode}[2] {%
    \begin{tabular}{@{}c@{}}% Avoid doubling \tabcolsep
        \textbf{#1} \\ \textbf{d=#2}
    \end{tabular}%
}

\begin{table}[ht]
\begin{tabular}{l | c c c | c c c |}
\cline{2-7}
          & \multicolumn{3}{c|}{\textbf{Single}} & \multicolumn{3}{c|}{\textbf{Double}} \\
\cline{2-7}
          & \testmode{Scalar}{1} & \testmode{SSE-4}{4} & \testmode{AVX-2}{8} & \testmode{Scalar}{1} & \testmode{SSE-4}{2} & \testmode{AVX-2}{4} \\
\hline
\multicolumn{1}{|c|}{\textbf{Eytzinger}                        } &     209.86 &     370.18 &     411.25 &     180.85 &     245.37 &     262.61 \\
\multicolumn{1}{|c|}{\textbf{Classic Offset}                    } &     213.28 &     363.35 &     476.10 &     209.04 &     247.02 &     208.63 \\
\hline
\end{tabular}
\caption{Throughput in millions of searches per second with vector $X$ of size 15}
\label{tab:results0}
\end{table}
\end{document}

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

좀 더 설명하자면: 기본적으로 LaTeX는 \hskip\tabcolsep열을 시작하기 전과 열을 마친 후에 추가합니다. 따라서 \tabcolsep첫 번째 열 앞과 마지막 열 뒤, 2\tabcolsep두 열 사이의 거리가 있습니다 . @{…}인수의 코드를 사용하면 @추가됩니다.거리 대신. 그래서 @{}거리를 제거합니다.

추가 참고 사항: 표에서는 수직선을 피하는 것이 좋습니다(설명서 참조).패키지booktabs) 그리고 사용하려면패키지siunitx숫자 열의 경우. 그리고 첫 번째 테이블 행의 요소를 중앙에 배치하지 않고 왼쪽 정렬합니다. 그리고 d=…테이블 헤드에는 수학 같은 내용이 있으므로 수학 모드로 설정해야 합니다. 이 경우에는 \boldmath수학의 글꼴 속성이 대부분 의미를 갖기 때문에(예: 굵게 표시( 예: 굵게 표시) 사용) 굵게 표시하지 않습니다 (예: 굵게 표시는 벡터나 집합에 자주 사용됨).

답변2

이것을 어디서 찾았는지 기억나지 않지만(참조가 있는 편집은 환영합니다) 명령문 바로 앞에 다음을 추가하면 \begin{tabular}주어진 값에 따라 열 간격을 조정할 수 있습니다.

\addtolength{\tabcolsep}{-0.4em}

여기서는 어떤 단위든 사용할 수 있지만 위의 예에서는 em현재 글꼴 크기를 기준으로 을 사용합니다.

답변3

5년 후...

이제 tabularray열 분리 정의 옵션을 정의하는 테이블 패키지를 사용할 수 있습니다 colsep. "클래식" 테이블의 코드와 비교할 때 코드는 더 짧고 셀의 텍스트는 수직 간격이 더 좋습니다.

\documentclass{article}
\usepackage{tabularray}

\begin{document}
    \begin{table}[ht]
\begin{tblr}{hline{4,Z} = {0.8pt}, vline{1} = {4-Z}{solid},
              colsep = {4pt},  % <--- reduce tabcolsep from 6pt to 4pt
             colspec = {Q[l, font=\bfseries] | *{3}{X[c]} | *{3}{X[c]} |},
            row{1-3} = {font=\bfseries}
            }
    \cline[0.8pt]{2-Z}
    &   \SetCell[c=3]{c}  Single
        &   &   &   \SetCell[c=3]{c}  Double   
                    &   &                               \\
\cline{2-7}
    & Scalar & SSE-4 & AVX-2 & Scalar & SSE-4 & AVX     \\
    & D=1    & D=4   & D=8   & D=1    & D=4   & D=8     \\  
Eytzinger
    &209.86 &370.18 &411.25 & 180.85 & 245.37 & 262.61  \\
Classic Offset
    &213.28 &363.35 &476.10 & 209.04 & 247.02 & 208.63  \\
\end{tblr}
\caption{Throughput in millions of searches per second with vector $X$ of size 15}
\label{tab:results0}
    \end{table}
\end{document}

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

답변4

{NiceTabular}of 를 사용하여 표 형식을 수행하는 방법은 다음과 같습니다 nicematrix.

\documentclass{article}
\usepackage{nicematrix}

\begin{document}
\begin{table}[ht]
\setlength{\tabcolsep}{4pt}
\renewcommand{\arraystretch}{1.4}
\begin{NiceTabular}{>{\bfseries}l*{6}{X[c]}}[hvlines,corners=NW]
\RowStyle[bold,nb-rows=3]{}
    &   \Block{1-3}{Single}
        &   &   &   \Block{1-3}{Double} \\
    & Scalar & SSE-4 & AVX-2 & Scalar & SSE-4 & AVX     \\
    & D=1    & D=4   & D=8   & D=1    & D=4   & D=8     \\  
Eytzinger
    &209.86 &370.18 &411.25 & 180.85 & 245.37 & 262.61  \\
Classic Offset
    &213.28 &363.35 &476.10 & 209.04 & 247.02 & 208.63  \\
\end{NiceTabular}
\caption{Throughput in millions of searches per second with vector $X$ of size 15}
\label{tab:results0}
\end{table}
\end{document}

여러 컴파일이 필요합니다( nicematrix내부적으로 PGF/Tikz 노드를 사용하기 때문에).

위 코드의 출력

관련 정보