利用LaTeX3的\int_step_inline
函数进行tikz
的批量定义与划线
一开始只载入了tikz宏包,编译正常,但是我再额外增加了tkz-euclide宏包之后马上报错,正文区代码完全相同,代码如下
\documentclass{ctexart}
\usepackage{tikz}
%\usepackage{tkz-euclide}
\begin{document}
\ExplSyntaxOn
\begin{tikzpicture}
\int_step_inline:nn {6}{
\coordinate (P{#1}) at ({#1},0);
\draw[fill=black](P{#1}) circle (1.5pt);
\draw (P{#1})node[anchor=north]{P{#1}}--++(0,1);
}
\end{tikzpicture}
\ExplSyntaxOff
\end{document}
报错信息如下:
猜测是宏展开问题造成的,重新调整了一下代码:
\documentclass{ctexart}
\usepackage{expl3}
% \usepackage{tikz}
\usepackage{tkz-euclide}
\ExplSyntaxOn
\cs_set:Npn \my_draw:n #1 {
\int_step_inline:nn {#1}{
\coordinate (P{##1}) at ({##1},0);
\draw[fill=black](P{##1}) circle (1.5pt);
\draw (P{##1})node[anchor=north]{P{##1}}--++(0,1);
}
}
\newcommand{\mydraw}[1]{
\my_draw:n {#1}
}
\ExplSyntaxOff
\begin{document}
\begin{tikzpicture}
\mydraw{6}
\end{tikzpicture}
\end{document}
你可以再体会一下,我觉得LaTeX3代码应该独立出来,再封装成命令供其它部分调用比较合理。