考虑以下 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
回答你的问题,在array
ortabular
环境中,行距是通过在每行中放置一个支柱来实现的,其高度和深度由\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}