\cline이 포함된 가변 너비 가로 규칙은 셀 텍스트를 방해합니다.

\cline이 포함된 가변 너비 가로 규칙은 셀 텍스트를 방해합니다.

가변폭 가로괘 만드는 법을 배우러 왔습니다.\hlineLaTeX 컴패니언과\cline~에서\cline{nm}처럼 작동하는 높이 조절이 가능한 수평선. 하지만 수평 문제는\cline규칙이 아래 셀의 텍스트를 침해한다는 것입니다.\cline. 하지만,\hline이 침입 문제가없는 것 같습니다. 아래의 최소 작업 예는 차이점을 보여줍니다.

\documentclass{article}
\usepackage{array}

\begin{document}

\newcolumntype{I}{!{\vrule width 3pt}}
\newlength\savedwidth
\newcommand\whline{\noalign{\global\savedwidth\arrayrulewidth\global\arrayrulewidth 6pt}%
\hline
\noalign{\global\arrayrulewidth\savedwidth}}
\begin{tabular}{|cIc|c|}\hline
A & B & C \\ \hline
X & Y & Z \\ \whline
100 & 10 & 1 \\ \hline
\end{tabular}

\renewcommand\whline[1]{\noalign{\global\savedwidth\arrayrulewidth\global\arrayrulewidth 6pt}%
\cline{#1}
\noalign{\global\arrayrulewidth\savedwidth}}
\begin{tabular}{|cIc|c|}\hline
 A & B & C \\ \hline
 X & Y & Z \\ \whline{1-3}
 100 & 10 & 1 \\ \hline
\end{tabular}

\end{document}

맨 위 그림은 기본적으로 \hline을 사용합니다. 맨 아래에는 \cline이 사용되었습니다.

사용시 또 다른 문제\cline두꺼운 수평선의 정의에서 (휘린위) 그것은\cellcolor명령은 내가 정의한 두께에 상관없이 셀 위에 있는 수평선 부분을 지웁니다.휘린장차 ~ 가 되는. 사용\hline정의에 있어서휘린셀에서 색상을 사용할 때 이 문제가 발생하지 않습니다.

나는 아래에서 시작하는 수직 위치가 세포의 영역이라고 생각합니다.\hline그리고\cline다르다. 을 위한\hline, 셀은 수평선의 아래쪽 경계 아래에서 시작하지만\cline, 셀은 규칙의 상단 경계 아래에서 시작됩니까? 누구든지 나에게 알려주세요!

메모: 가변 너비를 사용하고 싶습니다.\cline(예시와 같이 두껍거나 얇음) 그러나 이러한 침입 문제는 피하고 싶습니다.

답변1

두 문제 모두 관련되어 있습니다. 여러 s를 연속으로 \cline지원해야 합니다 . 예:\cline

\documentclass{article}
\begin{document}
  \begin{tabular}{*{5}{c}}
    1 & 2 & 3 & 4 & 5\\
    \cline{1-1}\cline{3-3}\cline{5-5}
    A & B & C & D & E
  \end{tabular}
\end{document}

예 \cline

따라서 \cline다음과 같이 아래로 이동할 수 없습니다 \hline. 정의는 다음과 \cline같습니다( latex.ltx).

\def\cline#1{\@cline#1\@nil}
\def\@cline#1-#2\@nil{%
  \omit
  \@multicnt#1%
  \advance\@multispan\m@ne
  \ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
  \@multicnt#2%
  \advance\@multicnt-#1%
  \advance\@multispan\@ne
  \leaders\hrule\@height\arrayrulewidth\hfill
  \cr
  \noalign{\vskip-\arrayrulewidth}}

마지막 단계에서는 \cline원래 수직 위치로 돌아갑니다.

그러나 줄의 수직 공간은 \clines 뒤에 추가될 수 있습니다. 예:

\cline{...}\cline{...}\noalign{\vskip\arrayrulewidth}

예제에 적용하면 매크로에 추가할 수 있습니다 \whline. 이는 다음 문제도 해결합니다 \cellcolor.

\documentclass{article}
\usepackage{array}
\usepackage{colortbl}

\begin{document}

\newcolumntype{I}{!{\vrule width 3pt}}
\newlength\savedwidth

\newcommand\whline[1]{%
  \noalign{%
    \global\savedwidth\arrayrulewidth\global\arrayrulewidth 6pt%
  }%
  \cline{#1}%
  \noalign{\vskip\arrayrulewidth}%
  \noalign{\global\arrayrulewidth\savedwidth}%
}
\begin{tabular}{|cIc|c|}\hline
 A & B & C \\ \hline
 X & \cellcolor{red}Y & Z \\ \whline{1-3}
 \cellcolor{green}100 & 10 & 1 \\ \hline
\end{tabular}

\end{document}

결과

답변2

cals다음은 패키지를 대안으로 사용하는 Heiko의 예입니다 .

다양한 테두리와 색상이 있는 cals 테이블

\documentclass{article}
\usepackage{xcolor}
\usepackage{cals}
\begin{document}
\begin{calstable}
\colwidths{{10mm}{10mm}{10mm}}
\makeatletter
\brow
\cell{A}
\def\cals@borderL{2pt}\cell{B}\let\cals@borderL=\relax
\cell{C}
\erow
\brow
\def\cals@borderB{3pt}
\cell{X}
\def\cals@borderL{2pt}\def\cals@bgcolor{red}
 \cell{Y}\let\cals@borderL=\relax\def\cals@bgcolor{}
\cell{Z}
\erow
\let\cals@borderB=\relax
\brow
\def\cals@bgcolor{green}\cell{100}\def\cals@bgcolor{}
\def\cals@borderL{2pt}\cell{10}\let\cals@borderL=\relax
\cell{1}
\erow
\end{calstable}
\end{document}

답변3

tblr다음과 같은 환경을 갖춘 대체 솔루션tabularray패키지:

\documentclass{article}

\usepackage{tabularray}

\begin{document}

\begin{tblr}{|c|[3pt]c|c|}
 \hline
   A   & B  & C    \\
 \cline[3pt]{1-2}
   X   & Y  & Z    \\
 \hline[6pt]
   100 & 10 & 1 \\
 \hline
\end{tblr}

\end{document}

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

답변4

패키지는 nicematrix환경을 제공하며 {NiceTabular}, 이 환경에서는 \cline해당 동작을 변경하기 위해 명령이 재정의되었습니다.

따라서 코드는 {NiceTabular}.

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\newcolumntype{I}{!{\vrule width 3pt}}
\newlength\savedwidth
\newcommand\whline[1]
   {\noalign{\global\savedwidth\arrayrulewidth\global\arrayrulewidth 6pt}%
    \cline{#1}
    \noalign{\global\arrayrulewidth\savedwidth}}

\begin{NiceTabular}{|cIc|c|}
\hline
 A & B & C \\ \hline
 X & Y & Z \\ \whline{1-3}
 100 & 10 & 1 \\ \hline
\end{NiceTabular}

\end{document}

nicematrixPGF/Tikz 노드를 사용하기 때문에 여러 컴파일이 필요합니다 .

위 코드의 출력

관련 정보