作为后续行动我之前的问题:在我的表格中,
\cline{1-1}
给了我正确的垂直位置,但是不是正确的水平长度。- 相反,
\rule{\mycustomlength}{0.4pt}
给了我正确的(水平)长度,但是不是在正确/期望的时间垂直位置。
如何解决?如何微调?例如通过调整
- 要么长度的
\cline
- 或者垂直位置的
\rule
(但没有进一步引入不均匀的行距!)
编辑
- 做不是想要改变表格的列宽。
- 做想要申请我的定制长度 源自a(随机选择)细绳,例如“blaaaaaa”。
这是一个通用/随机的 MWE:
\documentclass[a4paper]{article}
\newlength{\mycustomlength}
\settowidth\mycustomlength{blaaaaaaaaa}
%\usepackage{booktabs}
\begin{document}
\begin{tabular}{ccc}
aaaaaa &bbbb &ccc\\
\cline{1-1}
%%%%%
% The full syntax of the command is
% \cmidrule[ wd ]( trim ){a–b}
% \cmidrule[\mylength]{1-1}
dddd &e &f \\
\rule{\mycustomlength}{0.4pt}
\\
dddd &e &f \\
\end{tabular}
\end{document}
答案1
您可以只使用 cline 的定义,但要进行修补以添加固定长度规则。
\documentclass[a4paper]{article}
\newlength{\mycustomlength}
\settowidth\mycustomlength{blaaaaaaaaa}
%\usepackage{booktabs}
\makeatletter
\def\mycline#1{\expandafter\my@cline\@cline#1\@nil}
\def\my@cline#1\leaders#2\hfill{%
#1\hfill\leaders#2\hskip\mycustomlength\hfill\kern\z@}
\makeatother
\begin{document}
\begin{tabular}{ccc}
aaaaaa &bbbb &ccc\\
\cline{1-1}
dddd &e &f \\
\rule{\mycustomlength}{0.4pt}
\\
dddd &e &f \\
\mycline{1-1}
dddd &e &f \\
\end{tabular}
\end{document}
答案2
您可以在表格中创建一行任意高度设置\arraystretch
命令。但是,您需要在表格的每一行中使用命令来使其高度正确0
。\begin{tabular}
\strut
\documentclass[a4paper]{article}
\newlength{\mycustomlength}
\settowidth\mycustomlength{blaaaaaaaaa}
\begin{document}
\renewcommand{\arraystretch}{0}
\begin{tabular}{ccc}
\strut aaaaaa &bbbb &ccc\\
\hspace{-\arraycolsep}\rule{\mycustomlength}{0.4pt}\\
\strut blaaaaaaaaa &e &f
\end{tabular}
\end{document}
\hspace
将行移至表格的左边界。但是,如果规则比列长,就会出现问题。为了避免这种情况,您可以使用multirow
包将假行中的所有列合并为一列。
\documentclass[a4paper]{article}
\usepackage{multirow}
\newlength{\mycustomlength}
\settowidth\mycustomlength{blaaaaaaaaa}
\begin{document}
\renewcommand{\arraystretch}{0}
\begin{tabular}{ccc}
\strut aaaaaa &bbbb &ccc\\
\multicolumn{3}{@{}l@}{\rule{\mycustomlength}{0.4pt}}\\
\strut dddd &e &f
\end{tabular}
\end{document}
示例图片:
答案3
正如我在上面的问题中概述的那样,在解决这个问题的两种替代方法中,David 的解决方案解决了前者(调整长度)\cline
,而 egreg 为后者提供了关键成分(调整垂直位置)\rule
其他地方:
- 到使用分数
\normalbaselineskip
和不是的\baselineskip
,因为这个参数是归零在一个tabular
环境中。
因为我希望间距均匀经过“规则干预”(将分数线高相加得到整数)之后,这似乎也很有希望并且可行。
谢谢 egreg!
:-)
答案4
您可以重新定义单元格的宽度。它\cline
跨越列的长度,然后是其他长度。
首先,您可以尝试:
\documentclass[a4paper]{article}
\newlength{\mycustomlength}
\settowidth\mycustomlength{blaaaaaaaaa}
\begin{document}
\begin{tabular}{@{}c@{}cc}
aaaaaa & bbbb & ccc\\
\cline{1-1}
blaaaaaaaaa & & \\
\end{tabular}
\end{document}
此处的\cline
宽度正好等于表格中最宽列的宽度。但是,列之间没有缓冲区。与此形成对比:
\begin{tabular}{ccc}
aaaaaa & bbbb & ccc\\
\cline{1-1}
blaaaaaaaaa & & \\
\end{tabular}
您可以看到,它\cline
比列中最长的文本要宽一些。
如果您想要缓冲区,但又不想\cline
超出当前列中最宽文本的宽度,那么您可以执行以下操作:
\begin{tabular}{ccc}
aaaaaa & bbbb & ccc\\
\cmidrule(lr){1-1}
blaaaaaaaaa & & \\
\end{tabular}
这三个选项如下所示,
请注意,这会增加一些没有的\cmidrule
额外垂直间距。\cline