使用 tikz-cd 进行 Forloop

使用 tikz-cd 进行 Forloop

我正在尝试编写一个宏,它(目前)以数字 n 作为输入,并输出由 n 个连续箭头组成的 tikz-cd 图。

但是以下代码会导致错误:

在 \the 之后不能使用‘\relax’。

这是我的代码:

\documentclass[10pt,a4paper]{article}
\usepackage[english]{babel}
\usepackage{tikz}
\usetikzlibrary{matrix, cd, positioning}
\usepackage{forloop}

\newcommand{\smallcube}[1]{%
\begin{tikzcd}[ampersand replacement=\&, nodes in empty cells]%
\newcounter{width}%
\forloop{width}{1}{\value{ct} < #1}{\ar[r]\&}\\%
\end{tikzcd}}

\begin{document}
\smallcube{2}
\end{document}

答案1

您应该积累部分箭头;使用\foreach更简单:

\documentclass[10pt,a4paper]{article}
\usepackage[english]{babel}
\usepackage{tikz-cd}
\usepackage{etoolbox}

\newcommand{\smallcube}[1]{%
  \begin{tikzcd}[ampersand replacement=\&]
    \gdef\partialcube{}
    \foreach \n in {1,...,#1} {
      \gappto\partialcube{ {} \arrow[r] \& }
    }
  \partialcube {}
  \end{tikzcd}%
}

\begin{document}
\smallcube{2}

\smallcube{4}

\smallcube{5}
\end{document}

替代方法使用expl3

\documentclass[10pt,a4paper]{article}
\usepackage[english]{babel}
\usepackage{tikz-cd}
\usepackage{expl3}

\ExplSyntaxOn
% get a user level version of \prg_replicate:nn
\cs_set_eq:NN \replicate \prg_replicate:nn
\ExplSyntaxOff

\newcommand{\smallcube}[1]{%
  \begin{tikzcd}[ampersand replacement=\&]
  \replicate{#1}{ {} \arrow[r] \& } {}
  \end{tikzcd}%
}

\begin{document}
\smallcube{2}

\smallcube{4}

\smallcube{5}
\end{document}

在此处输入图片描述

相关内容