我在 LaTeX 中有此代码(.cls 文件是这里):
\documentclass[thesis=B,czech]{FITthesis}[2012/06/26]
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{dirtree}
\usepackage{amsmath,amsfonts,amssymb,amsthm}
\usepackage{comment}
\usepackage{longtable}
\usepackage{booktabs,multirow}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,calc,arrows,decorations.markings,decorations.pathmorphing}
\begin{document}
\begin{center}
\begin{tikzpicture}[scale=2]
\draw (1,0) -- (0,0) -- (0,1);
\end{tikzpicture}
\end{center}
\end{document}
...我有一个错误:
! Undefined control sequence.
\set@color ...\@pdfcolorstack push{\current@color
}\aftergroup \reset@color
l.65 \begin{document}
如何修复?
答案1
在其中第 395-399 行中FITthesis.cls
发现:
\AtBeginDocument{
\if@langczech\frontmatter*\else\frontmatter\fi %cislovani stranek pred prvni kapitolou
\thispagestyle{empty}
\if@langczech{Sem vlo{\v z}te zad{\' a}n{\' i} Va{\v s}{\' i} pr{\' a}ce.}\else{Insert here your thesis' task.}\fi
这揭示了罪魁祸首:使用的代码\AtBeginDocument
仍然是序言的一部分,并且类正在使用钩子来排版信息(在我上面显示的代码的第四行中);这当然会产生错误。我看到的唯一补救措施(也许有更好的选择)是编辑文件.cls
并替换行
\AtBeginDocument{
有两条线
\RequirePackage{etoolbox}
\AfterEndPreamble{
所以新的线条看起来会像这样
\RequirePackage{etoolbox}
\AfterEndPreamble{
\if@langczech\frontmatter*\else\frontmatter\fi %cislovani stranek pred prvni kapitolou
\thispagestyle{empty}
\if@langczech{Sem vlo{\v z}te zad{\' a}n{\' i} Va{\v s}{\' i} pr{\' a}ce.}\else{Insert here your thesis' task.}\fi
\AfterEndPreamble
来自的描述etoolbox
:
\AfterEndPreamble{<code>}
此钩子与 的不同之处在于\AtBeginDocument
,代码是在 的最后\begin{document}
、在任何\AtBeginDocument
代码之后执行的。
您应该联系该类的作者/维护者并报告此错误。