
私は、可変幅の水平線を作成する方法を学びました\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}
使用上のもう一つの問題\cline太い水平線の定義(ウィライン上記)は、\セルカラーコマンドは、セルの上にある水平線部分を消去します。ウィライン使用する\hlineの定義においてウィラインセル内で色を使用するとこの問題は発生しません。
私は、セルの領域の下から始まる垂直位置が、\hlineそして\cline異なります。\hlineでは、セルは水平線の下端から始まり、\clineセルはルールの上端の境界より下から始まりますか? どなたか教えてください!
注記: 可変幅を使いたい\cline(例に示すように厚くても薄くても)、これらの邪魔になる問題を回避したいのです。
答え1
両方の問題は関連しています。は、連続して\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
は のように下に移動できません\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
元の垂直位置に戻ります。
ただし、行の垂直スペースは\cline
s の後に追加できます。例:
\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
以下は、代わりに packageを使用する Heiko の例です。
\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}
複数のコンパイルが必要です ( nicematrix
PGF/Tikz ノードを使用するため)。