使用 pgffor 定义新命令?

使用 pgffor 定义新命令?

我正在尝试使用pgffor定义如下所示的新命令\boldsymbol\mathsf

\documentclass{article}
\usepackage{pgffor,amsmath}

\newcommand\makemathsfbf[1]{
    \foreach\a\b\c in{#1}{
        \expandafter\gdef\csname\a\b\c\expandafter\endcsname\expandafter{%
            \expandafter\boldsymbol{\mathsf\expandafter{\a}}
        }
    }
}
\makemathsfbf{AAA,BBB,...,ZZZ} % {AAA,BBB, CCC, DDD, ..., ZZZ}

\begin{document}
$\AAA$ % = $\boldsymbol{\mathsf A}$
\end{document}

我想用上面的命令,即\AAA,来替换\boldsymbol{\mathsf A}等等。但是我无法让它工作。我应该如何修改它?

答案1

没有办法定义循环 AAA ... ZZZ 你需要 A, ....Z 但是 pgf for 循环在这里并没有真正的帮助我会使用

在此处输入图片描述

\documentclass{article}

\usepackage{bm,amsmath}

\makeatletter
\count@=1
\loop
\expanded{\noexpand\bmdefine\csname\@Alph\count@\@Alph\count@\@Alph\count@\endcsname
   {\noexpand\mathsf{\@Alph\count@}}}
\ifnum\count@<26
\advance\count@\@ne
\repeat


\begin{document}
$\mathsf{A}+\AAA$


$\mathsf{G}+\GGG$

\end{document}

答案2

这将运行,但您需要想出一种方法来生成 {AAA,BBB,...,ZZZ}。也许吧\Alph{\i}\Alph{\i}\Alph{\i}

\documentclass{article}
\usepackage{amsmath}
\usepackage{pgffor}

\makeatletter
\newcommand\makemathsfbf[1]{
    \def\mylist{#1}
    \foreach \abc in \mylist {
        \expandafter\protected@xdef\csname\abc\endcsname{
            \boldsymbol{\mathsf{\abc}}
        }
    }
}
\makeatother

\makemathsfbf{AAA,BBB,ZZZ} % {AAA,BBB, CCC, DDD, ..., ZZZ}

\begin{document}
$\AAA$
\end{document}

相关内容