cfoot 中 \\ 和 \linebreak 有什么区别

cfoot 中 \\ 和 \linebreak 有什么区别
\documentclass[a5paper,10pt]{article}
\usepackage{array,tabularx,longtable,tabu}
\usepackage{colortbl,tikz}
\usepackage{lastpage}
\usepackage{fancyhdr}
\pagestyle{fancy}
\rhead{\thepage/\pageref{LastPage} page}
\cfoot{
\hrule
\vspace{1mm}
{ \footnotesize %
This is line one with some text. \linebreak % Replace \linebreak with \\ here to reproduce the error
This is line two with some more text.}}

\begin{document}

\begingroup
\footnotesize
\begin{longtabu} to \textwidth {Xrlrr}
    \rowfont{\bfseries}
        Name %
        & \multicolumn{2}{c}{Qty}
        & Price  %
        & NET
    \\ \endhead
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
  \end{longtabu}
\endgroup
\end{document}

上面的例子编译得很好。如果我在 cfoot 中用 \\ 替换 \linebreak,则会收到错误:

ABD:EveryShipout 初始化宏!放错 \cr。\reserved@c ->\ifnum 0=`{}\fi \cr

但是,如果我从表格中删除大约 10 行,那么表格将适合一页。然后 \\ 也将在 cfoot 中工作。没有错误消息。

我对此不太确定,但 longtabu 和 cfoot 不应该在某种程度上相互独立吗?我认为,如果 cfoot 内容在包含常规文本的页面上有效,那么相同的 cfoot 应该可以与任何其他内容一起使用。这是错误吗?如果这不是错误,那么这一定是初学者难以理解的东西的副作用。

答案1

这是 中的一个错误longtabu

\newline并且\linebreak在整个 LaTeX 中具有(或多或少)恒定的定义,但\\根据上下文具有不同的定义。\\在数组中与\\在中完全不同center,并且两者都不同于\\在普通文本中。这里发生的情况是,在标题中您处于范围内,\centering\\有其longtabu行结束定义,而不是它此时应该具有的“结束线和中心”定义。

tabu做:

%% No need for \arraybackslash ! ------------------------------------
\def\tabu@latextwoe {%
\def\tabu@temp##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}}
\tabu@temp \tabu@centering   \centering   \arraybackslash
\tabu@temp \tabu@raggedleft  \raggedleft  \arraybackslash
\tabu@temp \tabu@raggedright \raggedright \arraybackslash

这使得行为\centering变得像\centering\arraybackslash

\arraybackslash是一个命令(最初来自我的tabularx包),它重新定义为\\结束表格行。tabulararray

由于 TeX 输出例程的异步特性,将调用分页器来插入页头之内表的范围。

这意味着当fancyhdr调用来\centering将头部和脚部的中间部分居中时,它不会获得其期望的定义,并且\\局部定义为具有其longtable含义。

每当允许分页的环境进行局部重新定义时,它应该确保它们都在输出例程中本地重置,以便页面主体中的定义不会泄漏到头部。

在这种情况下,我认为实际上tabu这并不是您真正想要的。使用X只会使第一列数据不必要地远离表格的其余部分,从而使表格难以阅读。比较两个版本:

在此处输入图片描述

原始longtable代码没有\centering以这种方式重新定义。

无关,但你应该这样做

\cfoot{
\hrule
\vspace{1mm}
\footnotesize %
This is line one with some text. \\%\linebreak%\\%\linebreak % Replace \linebreak with \\ here to reproduce the error
This is line two with some more text.
}

不是

\cfoot{
\hrule
\vspace{1mm}
{\footnotesize %
This is line one with some text. \\%\linebreak%\\%\linebreak % Replace \linebreak with \\ here to reproduce the error
This is line two with some more text.
}}

您的版本中的额外内容在段落结束之前{}就结束了范围,\footnotesize因此脚注设置了正常基线上的小文本。请注意,一旦移除括号,脚注中的线条就会闭合。

\documentclass[a5paper,10pt]{article}
\usepackage{array,tabularx,longtable,tabu}
\usepackage{colortbl,tikz}
\usepackage{lastpage}
\usepackage{fancyhdr}
\pagestyle{fancy}
\makeatletter
\rhead{\thepage/\pageref{LastPage} page}
\cfoot{
\hrule
\vspace{1mm}
\footnotesize %
This is line one with some text.\\
This is line two with some more text.
}

\begin{document}

\begingroup
\footnotesize
\begin{longtable}{lrlrr}
        Name %
        & \multicolumn{2}{c}{\bfseries Qty}
        & \bfseries Price  %
        & \bfseries NET
    \\ \endhead
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
     E2014-SPAMA-GLOB   & -1.0  & db  & 31\,833  & -31\,833  \\
  \end{longtable}

\endgroup
\end{document}

相关内容