快速制作26个宏(每个字母一个)

Geo*_*off 7 latex

而不是为每个字母制作宏,如

\def\bA{\mathbf{A}}
...
\def\bZ{\mathbf{Z}}
Run Code Online (Sandbox Code Playgroud)

有没有办法循环一个字符类(如大写字母)并为每个字符生成宏?我也想对希腊字母做同样的事情(使用bm而不是mathbf).

Ale*_*tov 7

\def\mydefb#1{\expandafter\def\csname b#1\endcsname{\mathbf{#1}}}
\def\mydefallb#1{\ifx#1\mydefallb\else\mydefb#1\expandafter\mydefallb\fi}
\mydefallb ABCDEFGHIJKLMNOPQRSTUVWXYZ\mydefallb
Run Code Online (Sandbox Code Playgroud)

希腊语的新内容

\def\mydefgreek#1{\expandafter\def\csname b#1\endcsname{\text{\boldmath$\mathbf{\csname #1\endcsname}$}}}
\def\mydefallgreek#1{\ifx\mydefallgreek#1\else\mydefgreek{#1}%
   \lowercase{\mydefgreek{#1}}\expandafter\mydefallgreek\fi}
\mydefallgreek {beta}{Gamma}{Delta}{epsilon}{etaex}{Theta}{Iota}{Lambda}{kappa}{mu}{nu}{Xi}{Pi}{rho}\mydefallgreek


$\bGamma\bDelta \bTheta \bLambda \bXi \bPi $

$\bbeta \bgamma\bdelta \bepsilon \betaex \btheta \biota \blambda \bkappa \bmu \bnu \bxi \bpi \brho$
Run Code Online (Sandbox Code Playgroud)


小智 6

扩展安德鲁的答案,这是一个没有的解决方案\expandafter:

\makeatletter
\@tempcnta=\@ne
\def\@nameedef#1{\expandafter\edef\csname #1\endcsname}
\loop\ifnum\@tempcnta<27
  \@nameedef{b\@Alph\@tempcnta}{\noexpand\mathbb{\@Alph\@tempcnta}}
  \advance\@tempcnta\@ne
\repeat
Run Code Online (Sandbox Code Playgroud)

这将定义\bA,\bB等等,以扩展为\mathbb{A},\mathbb{B}等等.