大学课程文件和 tikz 包的另一个问题(与皇后大学和麦克马斯特大学有关,可能更多)

大学课程文件和 tikz 包的另一个问题(与皇后大学和麦克马斯特大学有关,可能更多)

我一直在尝试将我大学的论文包与 tikz 一起运行,但有一个我无法弄清楚的不兼容性(似乎与这里已经解决的问题不同)。令人费解的是,错误是too many }'s

编辑:代码现在在这里

https://www.writelatex.com/233647gqmtvk

编辑 2:我通过不在同一文档中直接使用 tikz 和 pgf 而是使用独立包来生成 pdf 图像并包含它们来解决这个问题。然而,事实证明大学样式表也存在 hyperref 问题。错误是相同的,并且在编译图形时出现(即使图形是 pdf)。只保留 '\inlcudegraphics' 语句即可。需要明确的是,与 hyperref 的不兼容性是 tikz 问题的补充。注释掉 hyperref 的包含但重新包含 tikz 会使问题再次出现。它只在排除两者的情况下有效。

EDIT3:并非所有 hyperref 都存在冲突。删除 'colorlinks = true'(可能任何 xcolor 选项都一样)即可解决该问题。

非常感谢您的帮助!

答案1

这个问题与 tikz 或图形环境没有直接关系。这是xcolor包(tikz输入)、hyperref包(也在链接中进行颜色操作)和您的大学风格代码之间的不良交互,该代码重新定义了放置浮动的机制。这不仅影响图形环境,还影响任何浮动环境(包括表格)。

main.tex鉴于OP 提供的链接中可用的文件,以下 MWE 显示了问题:

\documentclass{book}
\usepackage{xcolor}
\usepackage{tikz}
\usepackage{hyperref}
\input{main}
\begin{document}
\chapter{Foo}

\begin{table}
  This is a table.
\end{table}
\end{document}

编译的时候出现如下错误:

Chapter 1.
! Too many }'s.
\color@endbox ->\color@endgroup \egroup

l.11 \end{table}

问题是由 中的第 15-29 行代码引起的main.tex,这些代码(重新)定义了内部 latex 命令\@xfloat。注释掉这些行后问题就消失了。

我读了这些行,但不确定它们的用途。我想说删除它们不会对最终输出产生太大影响,但为了以防万一,我将它们与\@xfloatLaTeX 内核中的原始定义进行了比较。

代码很复杂,我没有时间深入研究它(也许其他更熟悉该例程的人可以提供更多说明),但我注意到原始 latex 代码包含一些与颜色相关的宏,这些宏在main.tex重新定义中没有出现,所以我添加了它们。特别是,我更改了第 26 行main.tex

    \global\setbox\@currbox\vbox\bgroup

    \global\setbox\@currbox\color@vbox\normalcolor\vbox\bgroup

瞧!问题消失了。但是请注意,我不确定我做了什么,所以可能还存在副作用。

相关内容