如何删除表格“单元格换行”中的双倍行距?

如何删除表格“单元格换行”中的双倍行距?

假设我有一个双倍行距的文本。现在,为了可视化表格单元格换行(据我所知,在 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}

在此处输入图片描述

相关内容