20 LaTeX3代码与tkz-euclide宏包冲突

发布于 2021-08-08 00:01:20

利用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}

报错信息如下:
image.png

查看更多

关注者
0
被浏览
1.5k
寄存器
寄存器 2021-08-08
这家伙很懒,什么也没写!

猜测是宏展开问题造成的,重新调整了一下代码:

\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代码应该独立出来,再封装成命令供其它部分调用比较合理。

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览