我正在使用该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}
我可以手动在环境前后插入垂直空间verse
,
\vspace{-\baselineskip}
\vspace{-2.6pt}
但这似乎是一个丑陋的解决方案。应该有一个更优雅的解决方案!
答案1
由于verse
环境是建立在基本list
环境之上的,\compress
因此另一个答案在这里也有效。
但是在环境之后仍然添加了空格,这就是为什么我在末尾减去和verse
的额外长度(因为环境充当一个段落,而您实际上可以在下一行开始另一个段落),加起来等于。\lastskip
\baselineskip
\baselineskip
verse
2\baselineskip
这个解决方案仍然很“丑陋”,因为每次\compress
都需要输入,所以我定义了一个新的环境,叫做。\vspace{-2\baselineskip}
tvserse
第三种(本地化)解决方案是定义一个V
采用两个(强制)参数的新列类型:
- 环境的实际可选参数
verse
({}
用于不使用此参数),以及 - 底层列的宽度
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}