我一直在尝试将我大学的论文包与 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
。注释掉这些行后问题就消失了。
我读了这些行,但不确定它们的用途。我想说删除它们不会对最终输出产生太大影响,但为了以防万一,我将它们与\@xfloat
LaTeX 内核中的原始定义进行了比较。
代码很复杂,我没有时间深入研究它(也许其他更熟悉该例程的人可以提供更多说明),但我注意到原始 latex 代码包含一些与颜色相关的宏,这些宏在main.tex
重新定义中没有出现,所以我添加了它们。特别是,我更改了第 26 行main.tex
:
\global\setbox\@currbox\vbox\bgroup
到
\global\setbox\@currbox\color@vbox\normalcolor\vbox\bgroup
瞧!问题消失了。但是请注意,我不确定我做了什么,所以可能还存在副作用。