![设置 \cmidrule 或 \cline 的宽度](https://linux22.com/image/376155/%E8%AE%BE%E7%BD%AE%20%5Ccmidrule%20%E6%88%96%20%5Ccline%20%E7%9A%84%E5%AE%BD%E5%BA%A6.png)
我想准备一份损益表,因此我在这个网站上找到并修改了一个模板,给出了以下 MWE:
\documentclass[a4paper,12pt]{article}
\usepackage{textcomp}
\usepackage{tgschola}
\usepackage{tabularx}
\usepackage{icomma}
\usepackage{booktabs}
\newcolumntype{I}{@{}X<{\xdotfill}}
\newcolumntype{R}{>{\qq}r<{\qq}}
\makeatletter
\newcommand{\xdotfill}{\leavevmode\leaders\hb@[email protected]{\hss.\hss}\hfill\hskip-\tabcolsep\kern\z@}
\makeatother
\newcommand\qq{\quad}
\newcommand\tablesec[1]{\multicolumn{1}{@{}l}{#1}&&\\}
\newcommand\tabletitle[1]{\multicolumn{1}{@{}c|}{\SEPx{2}#1}}
\newcommand\SEPx[1]{\vrule width 0pt height \dimexpr\fontcharht\font`A+2ex depth #1ex\relax}
\newcommand\SEP{\SEPx{0}}
\newcommand\?{\hphantom{0}}
\begin{document}
\renewcommand{\arraystretch}{1.2}
\noindent
\begin{tabularx}{\linewidth}{IRR}
\tablesec{Revenue:}
\qq Revenue 1 & & $5,00$ \\
\qq Revenue 2 & & $1247,50$ \\
\qq Revenue 3 & & $24,00$ \\
\tablesec{Expenses:}
\qq Cost 1 & $392,00$ \\
\qq Cost 2 & $206,82$ \\
\qq Cost 3 & $21,51$ \\
\cmidrule{2-2}
\qq Total cost & & $620,33$ \\
\cmidrule{3-3}
Net income & & $656,17$ \\
\cmidrule{3-3}\morecmidrules\cmidrule{3-3}
\end{tabularx}
\end{document}
问题出在这里:总计下的 cmidrule 太宽,它填满了整个单元格,我需要它更窄一些,像这样(参见红线):
另外,请注意红色星号:我正在使用的 booktabs 包允许我在最后一个 tabularx 规则中获得“双重倾斜”,但这也导致使用它的地方的行距更大。
也许有人知道解决办法:)
提前致谢,尼诺
答案1
我建议您加载该siunitx
包并使用其S
列类型来对齐第 2 列和第 3 列中的数字。分别对\cmidrule
第 2 列中的 s 进行左修剪和右修剪,对第 3 列中的 s 进行左修剪\cmidrule
。很久很久以前,在一个遥远的星系里,我似乎记得规则应该与相应列中最宽的数字一样宽。这是通过应用规则的左修剪和右修剪来实现的。
\documentclass[a4paper,12pt]{article}
\usepackage{tgschola}
\usepackage{booktabs}
\usepackage[output-decimal-marker={,},
group-minimum-digits=4 % optional
]{siunitx}
\makeatletter
\newcommand{\xdotfill}{\leavevmode\leaders\hb@[email protected]{\hss.\hss}\hfill\hskip-\tabcolsep\kern\z@}
\makeatother
\usepackage{tabularx}
\newcolumntype{I}{@{}X<{\xdotfill}}
\newcommand\qq{\quad}
\newcommand\tablesec[1]{\multicolumn{1}{@{}l}{#1}&&\\}
\newcommand\tabletitle[1]{\multicolumn{1}{@{}c|}{\SEPx{2}#1}}
\newcommand\SEPx[1]{\vrule width 0pt height \dimexpr\fontcharht\font`A+2ex depth #1ex\relax}
\newcommand\SEP{\SEPx{0}}
\newcommand\?{\hphantom{0}}
\begin{document}
\renewcommand{\arraystretch}{1.2}
\noindent
\begin{tabularx}{\linewidth}{I *{2}{S[table-format=4.2]} @{}}
\tablesec{Revenue}
\qq Revenue 1 & 5,00 \\
\qq Revenue 2 & 1247,50 \\
\qq Revenue 3 & 24,00 \\
\cmidrule(lr){2-2}
\qq Total income & & 1276.50 \\[1ex]
\tablesec{Expenses}
\qq Cost 1 & 392,00 \\
\qq Cost 2 & 206,82 \\
\qq Cost 3 & 21,51 \\
\cmidrule(lr){2-2}
\qq Total cost & & 620,33 \\
\cmidrule(l){3-3}
Net income & & 656,17 \\
\cmidrule(l){3-3}\morecmidrules\cmidrule(l){3-3}
\end{tabularx}
\end{document}