假设我有一个双倍行距的文本。现在,为了可视化表格单元格换行(据我所知,在 Latex 中无法自动实现表格单元格换行),我想用单倍行距来分隔这个“单元格换行”。表格的“实际换行”仍然保持双倍行距(“默认”,例如在类中定义)。
怎么办?我尝试在表格中设置 \singlespacing。但是这不起作用(抱怨缺少 endGroup)。
我发现了如何将整个表格变成单倍行距(将这个单倍行距组带到表格外面),但是我仍然想对“新表格线”使用双倍行距。
附言:我不希望表格中的线条显得分明。
附上截图和 MWE:
平均能量损失
\documentclass{article}
\usepackage{setspace}
\usepackage{booktabs}
\begin{document}
\doublespacing
\section{Text}
Test2\\
Test1
\section{Table}
\begin{tabular}{ll}
\toprule
\textbf{Key} & \textbf{Value} \\
\midrule
Category & Line1 \\
LongLabel: & Line2 \\
Category2: & Line1 \\
& Line2 \\
\bottomrule
\end{tabular}
\end{document}
答案1
您可以定义在环境定义之前和之后添加的命令,以便您可以\begin{singlespace}
在之前\begin{tabular}
和\end{singlespace}
之后手动添加\end{tabular}
。
或者,使用该etoolbox
包,您可以在序言中添加几行,每次添加表格时,这些行都会为您执行此操作。然后,您可以使用可选的 手动指定您想要更大的间距\\[height]
:
\documentclass{article}
\usepackage{setspace}
\usepackage{booktabs}
\usepackage{etoolbox}
\BeforeBeginEnvironment{tabular}{\begin{singlespace}}
\AfterEndEnvironment{tabular}{\end{singlespace}}
\begin{document}
\doublespacing
\section{Text}
Test2\\
Test1
\section{Table}
\begin{tabular}{ll}
\toprule
\textbf{Key} & \textbf{Value} \\
\midrule
Category & Line1 \\
LongLabel: & Line2 \\[1em]
Category2: & Line1 \\
& Line2 \\
\bottomrule
\end{tabular}
\end{document}
答案2
虽然对 OP 的 MWE 最简单的修改是[-10pt]
在两行末尾添加Line1 \\
,但这里还有另一种方法......
可以使用堆栈。
情况1:如果堆栈仅限于两行......
\documentclass{article}
\usepackage{setspace}
\usepackage{booktabs}
\usepackage{stackengine}
\renewcommand\stacktype{L}% LONG STACKS ARE THE DEFAULT
\renewcommand\stackalignment{l}% LEFT ALIGNED ARE THE DEFAULT
\setstackgap{L}{11pt}% THIS IS THE VERTICAL BASELINESKIP IN LONG STACKS
\begin{document}
\doublespacing
\section{Text}
Test2\\
Test1
\section{Table}
\begin{tabular}{ll}
\toprule
\textbf{Key} & \textbf{Value} \\
\midrule
\stackunder{Category}{Longlabel} & \stackunder{Line1}{Line2} \\
Category2: & \stackunder{Line1}{Line2} \\
\bottomrule
\end{tabular}
\end{document}
案例 2:如果条目有多行,则这种替代语法将会简化事情:
\documentclass{article}
\usepackage{setspace}
\usepackage{booktabs}
\usepackage{stackengine}
\setstackEOL{\#}% LINE SEPARATOR IN STACK (\\ CONFLICTS WITH TABULAR USE)
\renewcommand\stacktype{L}% LONG STACKS ARE THE DEFAULT
\setstackgap{L}{11pt}% THIS IS THE VERTICAL BASELINESKIP IN LONG STACKS
\begin{document}
\doublespacing
\section{Text}
Test2\\
Test1
\section{Table}
\begin{tabular}{ll}
\toprule
\textbf{Key} & \textbf{Value} \\
\midrule
\Longunderstack[l]{Category\# Longlabel\# Longer Label} &
\Longunderstack[l]{Line1\# Line2} \\
Category2: & \Longunderstack[l]{Line 1\# Line 2\# ...\# Line 13} \\
\bottomrule
\end{tabular}
\end{document}