当我使用时expl3
会tikz
出现错误(pdflatex)。我的完整代码是
\documentclass{article}
\usepackage{tikz}
\ExplSyntaxOn
\begin{document}
\begin{tikzpicture}
\draw(0,0)--(3,3);
\end{tikzpicture}
\end{document}
就可以看到效果了这里。我注意到使用 xelatex 链接中的代码可以正确编译。尽管如此,有时它仍然运行不正常。
有什么方法可以让他们更好地合作?
答案1
\begin{document}
在范围内做\ExplSyntaxOn
是一个非常糟糕的主意,对不起。
几个软件包在开始文档时延迟加载配置文件,并且在这种情况下输入文件\ExplSyntaxOn
至少是有风险的:空格和行尾会被忽略,如果文件
\mycountera=100
\ifnum\mycounterb=\mycountera 10\else 0\fi
(编造代码来显示可能出现的问题之一)您最终会\mycountera
保留值 10010 或 1000,具体取决于 的当前值\mycounterb
。给定的代码是有效的,\mycountera
当不忽略空格时会设置为 100,然后打印 10 或 0。但是当忽略空格时,\ifnum
在 TeX 确定传递给 的值之前会先扩展\mycountera
。
想象\ExplSyntaxOn
一下把飞机带到机库安装新设备。你想在把飞机拉上跑道起飞之前就结束安装,对吧?
当你处于\ExplSyntaxOn
统治之下时,永远不要排版。嗯,有时
\ExplSyntaxOn<expl3 code>\ExplSyntaxOff
可能很有吸引力document
。避免这种情况,并在执行业务之前定义\begin{document}
用户级命令:先安装设备,然后起飞。
David 的回答检查字符串的某项是否为空格是一个案例:他对\ExplSyntaxOn
inside的用法document
仅仅是为了举例,而不是为了在真实文档中所做的。