如何消除 longtable 末尾的 \\

如何消除 longtable 末尾的 \\

\mycmd我定义一个像这样的宏

\newcommand\mycmd[2]{{some complicated format #1}&{some complicated format #2}\\}

简化输入。所以我可以这样写:

sometext

\begin{longtable}{cc}
  \mycmd{contentA1}{contentA2}
  \mycmd{contentB1}{contentB2}
  \mycmd{contentC1}{contentC2}
  ...

但在长桌的尽头,

  \mycmd{contentZ1}{contentZ2}
\end{longtable}

some text

longtable 和 text 之间有一个空格。我怎样才能通过在最后一个\mycmd命令的末尾设置一个命令来消除这个空格

  \mycmd{contentZ1}{contentZ2}\avalidmacro
\end{longtable}

some text

让表格靠近文本?

---重新提供 MWE 以供比较---

\setlength{\LTpre}{0pt}\setlength{\LTpost}{0pt}%
\begin{longtable}{cc}
  sample table text&sample table text\\
\end{longtable}

main text main text main text main text

\begin{longtable}{cc}
  sample table text&sample table text
\end{longtable}

main text main text main text main text

main text main text main text main text

---为 Yiannis 编辑---

\documentclass{article}
\usepackage{longtable,xcolor}
\def\fqdi{fqd}
\def\fqdv{\fqdi\ \fqdi\ \fqdi\ \fqdi\ \fqdi\ }

\begin{document}
\setlength{\LTpre}{0pt}\setlength{\LTpost}{0pt}%
\itshape 
\fqdv\fqdv

\begin{longtable}{cc}
\color{red}\fqdv\fqdv&\color{red}\fqdv\fqdv\\
\end{longtable}

\fqdv\fqdv

\begin{longtable}{cc}
\color{red}\fqdv\fqdv&\color{red}\fqdv\fqdv
\end{longtable}

\fqdv\fqdv

\fqdv\fqdv

\begin{tabular}{cc}
\color{blue}\fqdv\fqdv&\color{blue}\fqdv\fqdv
\end{tabular}

\fqdv\fqdv
\end{document}

红色为长表中的文本,蓝色为表格中的文本,黑色为正文。

  • 你会发现轻微地在第一行的红色和第二行的黑色中添加了空格。
  • 红色不在线条的中心,而蓝色则在线条的中心。

问题:

  1. 消除的影响\\
  2. 使longtable的文本与tabular的文本相同,在行间居中。

答案1

这不是你的命令,而是表格末尾允许的胶水量。看到这个最小值并稍微调整一下值LTpost

\documentclass{article}
\usepackage{lipsum,longtable}
\newcommand\addrow[2]{{some complicated format #1}&{some complicated format #2}\\}
\setlength{\LTpre}{0pt}\setlength{\LTpost}{-1pt}%
\begin{document}
\lipsum[3]
\begin{longtable}{cc}
%\hline
  \addrow{contentA1}{contentA2}
  \addrow{contentB1}{contentB2}
  \addrow{contentC1}{contentC2}
  \addrow{contentZ1}{contentZ2}
%\hline
\end{longtable}
\lipsum[1]
\end{document}

最好完全提供可用的最小值,就像我在这里所做的那样。取消注释\hline以查看行之间的空间。此外,最好使用“语义”命令,例如,而\mycmd不是使用\addrow

答案2

longtable 并没有真正想到必须像这样紧密地缝合到垂直列表中,通常它会偏移一些空间或开始新的一页。它可以更努力,但目前您可以纠正前一段的深度(就像大多数 tabularlongtable使用 struts 一样,因此在合理的情况下可以知道它的高度和深度。

我在测试文件中行首添加了一些数字,以便更容易分辨日志中的哪一行是哪一行\showoutput。还添加了图片模式,每 12pt 一行显示预期的基线间距。

在此处输入图片描述

\documentclass{article}
\usepackage{longtable,xcolor}
\def\fqdi{fqd}
\def\fqdv{\fqdi\ \fqdi\ \fqdi\ \fqdi\ \fqdi\ }
\setlength\parindent{0pt}
\setlength\parskip{0pt}
\showoutput
\begin{document}
\setlength{\LTpre}{0pt}\setlength{\LTpost}{0pt}%
\itshape 

0\begin{picture}(0,0)
\multiput(9,0)(0,-12){10}{\line(-1,0){15}}
\end{picture}

1\fqdv\fqdv

\vskip-\prevdepth\vskip\dp\strutbox

\begin{longtable}{cc}
\color{red}2\fqdv\fqdv&\color{red}\fqdv\fqdv\\
\end{longtable}

\vskip-\dp\strutbox
3\fqdv\fqdv

\vskip-\prevdepth\vskip\dp\strutbox

\begin{longtable}{cc}
\color{red}4\fqdv\fqdv&\color{red}\fqdv\fqdv
\end{longtable}

5\fqdv\fqdv

\fqdv\fqdv

\begin{tabular}{cc}
\color{blue}\fqdv\fqdv&\color{blue}\fqdv\fqdv
\end{tabular}

\fqdv\fqdv
\end{document}

相关内容