如何使用修改后的 \baselinestretch 将表格中的第一个 \item 与基线对齐

如何使用修改后的 \baselinestretch 将表格中的第一个 \item 与基线对齐

在 beamer 演示文稿(无setspace,无)中,我想在列中enumitem使用环境。我希望第一行显示在同一基线上,与其他列的第一行相同。如所述itemizetabular\item这里\itemize从新行开始,因此实现此目的的正确方法是垂直移动-\baselineskip。但是,如果 被修改,则此方法不起作用baselinestretch,例如\linespread{1.15}

\documentclass{beamer}
\usepackage{tikz}
\linespread{1.15}

\newcommand{\tikzmark}[2]{
\tikz[baseline=(#1.base), remember picture]{
\node(#1)[inner sep=0pt]{#2};
}
}   

\begin{document}
    \begin{frame}[t]{Title}
        \begin{tabular}[t]{p{0.1\linewidth}p{0.8\linewidth}}
            \tikzmark{left}{left text b} & \vspace*{-1\baselineskip}
            \begin{itemize}
                \item \tikzmark{right}{b number 1} \\ (with possibly two lines) 
                \item number 2 
            \end{itemize}
        \end{tabular}
            \tikz[overlay, remember picture]{
            \draw[red, line width=0.05pt](left.south west)--(right.south east|-left.south west);
            \draw[blue](right.south east)--(right.south east|-left.south east);
            }
    \end{frame}
\end{document}

在此处输入图片描述

答案1

一般来说,最好不要直接修改诸如\linespread和 之类的低级 TeX 指令\baselineskip。相反,可以考虑加载setspace包并发出指令\setstretch{1.15}

谈到当前的紧急问题,由于 1/1.15=0.8696 或大约 0.87,您可能希望使用\vspace*{-0.87\baselineskip}而不是\vspace*{-1\baselineskip}来对齐环境第一列和第二列的第一行tabular

答案2

当我尝试在另一台机器上重现此问题时,我发现了一个非常简单的解决方案:问题不知何故是由于baselinestretch在序言中修改了而引起的。使用

\AtBeginDocument{\linespread{1.15}}

代替

\linespread{1.15}

仅在文档内部更改它即可解决问题。当然,了解原因仍然很有趣。baselinestretch通常不应该在序言中更改吗?

相关内容