我的标题中有一个表格,使用fancyhdr
和longtable
占用多页。longtable
由环境创建,还设置了一些变量:
\newcolumntype{|}{!{\color{white}\vline}}
\rowcolors{2}{greylight}{greynormal}%
\setlength{\tabcolsep}{12pt}%
\setlength{\extrarowheight}{5pt}%
\setlength{\arrayrulewidth}{2pt}%
我面临的问题是,在所有长表尚未完成的页面上,标题中的表格将使用这些更改。
在我的标题中,是否有一种方便的方法来重置所有可能已经设置的变量?
目前,我在标题中重新定义了那些特定变量,但我发现它很脏并且不太健壮。
答案1
正如我在评论中指出的那样,你做的是正确的。LaTeX 重置了标题中的几项内容,但列表相当临时,而且你需要确保标题中放入的任何代码的环境都是标准化的,这并不罕见。
基本上,LaTeX 目前恢复了以下内容:
文档默认字体:
\reset@font\normalsize
正常空间因子设置
\normalsfcodes
如果将节标题复制到页面标题,请避免在每一页上写标签信息
\let\label\@gobble
\let\index\@gobble
\let\glossary\@gobble
清零基线
\baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
...
默认文档颜色
\normalcolor
因此,您将看到,没有单一全局重置的概念,也没有安排文档范围的可能性,使得页面内的设置不会泄漏到标题代码中。
然后,大多数多行标题也会\@parboxrestore
直接调用,或者将多行代码放入 parbox 或 minipage 中。这会重置一些附加参数。
\def\@arrayparboxrestore{%
\let\if@nobreak\iffalse
\let\if@noskipsec\iffalse
\let\par\@@par
\let\-\@dischyph
\let\'\@acci\let\`\@accii\let\=\@acciii
\parindent\z@ \parskip\z@skip
\everypar{}%
\linewidth\hsize
\@totalleftmargin\z@
\leftskip\z@skip \rightskip\z@skip \@rightskip\z@skip
\parfillskip\@flushglue \lineskip\normallineskip
\baselineskip\normalbaselineskip
\sloppy}
\def\@parboxrestore{\@arrayparboxrestore\let\\\@normalcr}
因此,在标题代码中明确重置(比如说)的替代方法\tabcolsep
是将其重置添加到\@arrayparboxrestore
这意味着任何tabular
嵌套在p
列中的longtable
都将获得重置值,而不是外部使用的值longtable
。所以这取决于您的要求......