\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}
红色为长表中的文本,蓝色为表格中的文本,黑色为正文。
- 你会发现轻微地在第一行的红色和第二行的黑色中添加了空格。
- 红色不在线条的中心,而蓝色则在线条的中心。
问题:
- 消除的影响
\\
; - 使
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}