在设置中定义\draw
命令的参数时被拒绝,其他一些参数(例如等)也被拒绝,但等是可以的。在处理接口时会不会有什么问题?显然,如果使用,就不会出现这样的问题。\NewDocumentCommand
[help lines]
[ultra thin]
[lime,thin]
Expl3 key-value
TikZ
LaTeX2 \newcommand
\documentclass{article}
% RN. 28 March 2017
%=======================
\usepackage{xparse}
\usepackage{tikz}
%-----------------------
\ExplSyntaxOn
\NewDocumentCommand\myGrid{O{4}}
{
%\draw [help lines] (0,0) grid (#1,#1); => compiler ERROR
\draw [lime,thin] (0,0) grid (#1,#1);
}
\ExplSyntaxOff
%-----------------------
\begin{document}
\begin{tikzpicture}
\myGrid [10]
\end{tikzpicture}
\end{document}
答案1
波浪号是 expl3 语言中的“空格”,因此,每当您需要真正的空格时(例如,在字符串或键中,如在您的示例中),您需要添加一个“空格”,它在 expl3 机制内看起来就像波浪号。
现在有很好的论据来忽略正常空格,一旦你习惯了~写~像这样~或~这样的~字符串,它就不会那么乏味了(而且如果忘记了,比在 LaTeX2e 代码中查找由缺少百分比引起的问题要容易得多)。
当然如果你必须在代码中写很多字符串(或者波浪号在你的键盘上不容易使用)那么它就没那么方便了,但是总的来说 expl3 的约定对获得更易读的代码有很大帮助,并且由于在重要位置忘记了 % 字符而导致的错误也少得多(这会导致输出中出现难以追踪的微小额外空格 --- 比 astringwhereforsomereasonthespacesaremissing 难得多)。