TikZ 不适用于大学论文课程(另一个问题)

TikZ 不适用于大学论文课程(另一个问题)

由于某种原因,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

您可以:

  1. 注释掉这些行;这意味着现在>和具有其原始定义,而不是样式文件所期望的、<的含义。\textgreater\textless

  2. 将以下行添加到您的.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

相关内容