如何消除诗句环境前后的垂直空间?

如何消除诗句环境前后的垂直空间?

我正在使用该verse包在环境中排版诗歌tabular。是否可以消除诗歌包前后的空格?

\usepackage{verse}
...
\begin{tabular}{p{30mm} | p{30mm} | p{30mm}}
  \hline
    1.
  &
\begin{verse}
AAAA \\
BBBB \\
CCCC
\end{verse}
  & QUESTION \\ \hline
\end{tabular}

MWE 的输出

我可以手动在环境前后插入垂直空间verse

\vspace{-\baselineskip}
\vspace{-2.6pt}

但这似乎是一个丑陋的解决方案。应该有一个更优雅的解决方案!

答案1

由于verse环境是建立在基本list环境之上的,\compress因此另一个答案在这里也有效。

但是在环境之后仍然添加了空格,这就是为什么我在末尾减去和verse的额外长度(因为环境充当一个段落,而您实际上可以在下一行开始另一个段落),加起来等于。\lastskip\baselineskip\baselineskipverse2\baselineskip

这个解决方案仍然很“丑陋”,因为每次\compress都需要输入,所以我定义了一个新的环境,叫做。\vspace{-2\baselineskip}tvserse

第三种(本地化)解决方案是定义一个V采用两个(强制)参数的新列类型:

  1. 环境的实际可选参数verse{}用于不使用此参数),以及
  2. 底层列的宽度p

整个单元格现在被排版为一节诗句。

如果array使用该包,\leavevmode前两种情况需要额外付费。

代码

\documentclass{article}
\usepackage{verse}
\usepackage{array}
\makeatletter
\newcommand*{\compress}{\@minipagetrue}
\makeatother
\newenvironment{tverse}[1][]{\compress\ifx\\#1\\\begin{verse}\else\begin{verse}[#1]\fi}{\end{verse}\vspace{-\lastskip}\vspace{-\baselineskip}\leavevmode}
\newcolumntype{V}[2]{%
    >{%
        \compress%
        \ifx\\#1\\%
            \begin{verse}%
        \else%
            \verse[#1]%
        \fi%
    }%
    p{#2}%
    <{%
        \end{verse}%
        \vspace{-\lastskip}%
        \vspace{-\baselineskip}%
    }%
}
\begin{document}
\begin{tabular}{p{30mm} | p{30mm} | p{30mm}}
  \hline 1. & \compress \begin{verse} AAAA \\
                                      BBBB \\
                                      CCCC \end{verse} \vspace{-\lastskip}\vspace{-\baselineskip}\leavevmode & QUESTION \\ \hline
\end{tabular}

\begin{tabular}{p{30mm} | p{30mm} | p{30mm}}
  \hline 1. & \begin{tverse} AAAA \\
                             BBBB \\
                             CCCC \end{tverse} & QUESTION \\ \hline
\end{tabular}

\begin{tabular}{p{30mm} | V{}{30mm} | p{30mm}}
  \hline 1. &  AAAA \\
               BBBB \\
               CCCC & QUESTION \\ \hline
\end{tabular}
\end{document}

输出

在此处输入图片描述

相关内容