表格环境中行间距的默认值

表格环境中行间距的默认值

考虑以下 MWE。

\documentclass[12pt]{report}
\usepackage[francais]{babel}
\usepackage[utf8]{inputenc}

\begin{document}
\vspace*{\fill}
\begin{tabular}{l}
    \textbf{« Ah ! comme la neige a neigé !} \\
    \textbf{Ma vitre est un jardin de givre.} \\
    \textbf{Ah ! comme la neige a neigé !} \\
    \textbf{Qu'est-ce que le spasme de vivre} \\
    \textbf{À la douleur que j'ai, que j'ai ! [...] »} \\
    Émile Nelligan
\end{tabular}
\vspace*{\fill}

\end{document}

我想将最后几行之间的间距加倍,这样诗人的名字就与诗歌脱节了。我知道我可以在括号中添加一个参数来\\增加垂直空间,但我不知道环境中行间间距的确切值是多少\tabular。我发现,当尝试更新\arraystretch序言中的命令时,它的默认值是 1。由于 1 是无量纲的,这绝对没有告诉我任何有关真实值的信息。

答案1

回答你的问题,在arrayortabular环境中,行距是通过在每行中放置一个支柱来实现的,其高度和深度由\arraystretch乘以普通命令产生的支柱的高度和深度得出\strut。因此,你可以使用类似下面的命令获得所需的值(在正常情况下)

\newlength\mylen
\setlength\mylen{\dimexpr\arraystretch\ht\strutbox+\arraystretch\dp\strutbox\relax}

所以你可以这样做:

\documentclass[12pt]{report}
\usepackage[francais]{babel}
\usepackage[utf8]{inputenc}

\newlength\mylen
\setlength\mylen{\dimexpr\arraystretch\ht\strutbox+\arraystretch\dp\strutbox\relax}

\begin{document}
\vspace*{\fill}
\begin{tabular}{l}
    \textbf{« Ah ! comme la neige a neigé !} \\
    \textbf{Ma vitre est un jardin de givre.} \\
    \textbf{Ah ! comme la neige a neigé !} \\
    \textbf{Qu'est-ce que le spasme de vivre} \\
    \textbf{À la douleur que j'ai, que j'ai ! [...] »} \\[\mylen]
    Émile Nelligan
\end{tabular}
\vspace*{\fill}
\end{document}

产生

在此处输入图片描述

使用额外的空行可以得到完全相同的结果:

\begin{tabular}{l}
    \textbf{« Ah ! comme la neige a neigé !} \\
    \textbf{Ma vitre est un jardin de givre.} \\
    \textbf{Ah ! comme la neige a neigé !} \\
    \textbf{Qu'est-ce que le spasme de vivre} \\
    \textbf{À la douleur que j'ai, que j'ai ! [...] »} \\
    \\
    Émile Nelligan
\end{tabular}

但是,正如评论中所注意到的,要排版诗歌,tabular您可以使用标准verse环境或许多专用包提供的功能,例如:

在 CTAN 中,Poetry and Drama您将找到其他相关软件包的列表。

如果你对题词感兴趣,epigraph包可能对标准类有用;memoir并且 KOMA 类提供了自己的题词机制。

答案2

除了提醒verse环境(以及提供一些增强功能的同名包)之外,我想建议为此使用一个特殊的环境:优点是更大的灵活性。

在例子中,我表明只需修改定义就\poet可以获得不同的效果,而无需对所有诗歌采取行动。

\documentclass[12pt]{report}
\usepackage[T1]{fontenc}     % <---- Don't forget this with French!
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel}

\newenvironment{poetry}[1][]
 {#1\begin{tabular}{l}}
 {\end{tabular}}

\newcommand{\poet}[1]{\noalign{\vspace{.5\normalbaselineskip}}\normalfont#1}

\begin{document}
\begin{poetry}[\bfseries]
« Ah ! comme la neige a neigé ! \\
Ma vitre est un jardin de givre. \\
Ah ! comme la neige a neigé ! \\
Qu'est-ce que le spasme de vivre \\
À la douleur que j'ai, que j'ai ! [...] » \\
\poet{Émile Nelligan}
\end{poetry}

\bigskip

\begin{poetry}[\itshape]
« Ah ! comme la neige a neigé ! \\
Ma vitre est un jardin de givre. \\
Ah ! comme la neige a neigé ! \\
Qu'est-ce que le spasme de vivre \\
À la douleur que j'ai, que j'ai ! [...] » \\
\poet{Émile Nelligan}
\end{poetry}

\bigskip

% this is how \poet could be defined in the preamble
\renewcommand{\poet}[1]{%
  \noalign{\vspace{.5\normalbaselineskip}}%
  \multicolumn{1}{r}{\normalfont\scshape#1}%
}

\begin{poetry}
« Ah ! comme la neige a neigé ! \\
Ma vitre est un jardin de givre. \\
Ah ! comme la neige a neigé ! \\
Qu'est-ce que le spasme de vivre \\
À la douleur que j'ai, que j'ai ! [...] » \\
\poet{Émile Nelligan}
\end{poetry}

\end{document}

在此处输入图片描述

相关内容