由于某种原因,TikZ 箭头命令\draw[->]
和任何类似命令\draw[<<->]
无法与下面显示的大学类文件配合使用。有人能找出原因吗?
样式文件太大,无法粘贴到这里,但可以从以下位置下载http://www.compholio.com/csm/csm-thesis/#download
错误是TeX capacity exceeded, sorry [input stack size=5000]
。但是,tikzpicture
当我更改类文件时 可以工作。
任何想法?
答案1
问题是文件csm-thesis-encoding.sty
变成>
了<
活动字符;搜索第 47-52 行左右,你会看到:
\begingroup
\catcode`\>=\active
\csm@redefine@char{>}{\textgreater}
\catcode`\<=\active
\csm@redefine@char{<}{\textless}
\endgroup
您可以:
注释掉这些行;这意味着现在
>
和具有其原始定义,而不是样式文件所期望的、<
的含义。\textgreater
\textless
将以下行添加到您的
.tex
文档中:\usepackage{etoolbox} \BeforeBeginEnvironment{tikzpicture}{\catcode`\>=12} \BeforeBeginEnvironment{tikzpicture}{\catcode`\<=12} \AfterEndEnvironment{tikzpicture}{\catcode`\>=\active} \AfterEndEnvironment{tikzpicture}{\catcode`\<=\active}
答案2
Gonzalo Medina 的诊断是正确的。但他提出的解决方法并不好。
实际上,将<
和重新定义>
为活动字符扩展为\textless
和\textgreater
是完全错误的。模板在致谢部分使用了,而正确的字符应该是\textlangle
和\textrangle
。无论如何,在文本中使用<
和的情况很少见,没有理由仅仅为了能够在模板中>
输入而冒着破坏与宏和包的兼容性的风险。<spouse>
例如,您无法\ifdim\somelength>1cm
在文档中说要测量一个物体并采取适当的措施。换句话说,TikZ 只是一可能带来问题的包。
因此,我的建议是简单地恢复错误的分配。如果你真的需要<
并>
在文本中使用 T1 编码。由于修改文件.sty
是不合适的,因为如果发布新版本,您的修改将会丢失,因此您可以使用以下调用恢复设置:
\usepackage{csm-thesis}
\makeatletter
\CSM@AtBeginDocumentLast{\@makeother\<\@makeother\>}% revert bad setting
\makeatother
%\usepackage[T1]{fontenc}% possibly uncomment this