Вместо того, чтобы делать макрос для каждой буквы, как в
\def\bA{\mathbf{A}}
...
\def\bZ{\mathbf{Z}}
Существует ли способ циклично выполниться по классу символов (как прописные буквы) и генерировать макросы для каждого? Я также хотел бы сделать то же для греческих букв (использование bm
вместо mathbf
).
\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
Новое для греческого языка
\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$
Не лучше было бы определить одну команду
\newcommand\bm[1]{\ensuremath{${\boldmath$#1$}}$}
, и ее можно было бы использовать как в текстовом режиме
, так и в математическом
режим.
Использование:
\[\bm{F(x)}=\int\bm\delta(x)\ dx]
\where \mb F is blah blah blah and \bm \delta is halb halb halb...
Результат:
F (x) = 'ingral delta (x)' dx
.
Где F - это бла-бла-бла, а ' delta ' - это halb halb halb ...
Внешние доллары нужны для выхода из математического (римского) режима, потому что \ boldmath
команда не действует в математическом режиме. Внутренние переключаются обратно на математику (жирный шрифт). Дополнительные фигурные скобки ( $ {\ boldmath
) гарантируют, что команда \ boldmath
будет работать только с # 1
Еще одним преимуществом этого кода является проверка новых команд на наличие \ bb
и \ bg
. Так что вы не можете легко сломать макрос LaTeX.
Надеюсь, это то, что вы ищете.
Я бы порекомендовал сделать:
\newcommand{\b}[1]{\mathbf{#1}}
как говорит Кроули, и то же самое для всех других алфавитов. Однако, если вы действительно хотите сделать это с помощью кода LaTeX, вот тот, который, кажется, работает:
\documentclass{article}
\usepackage{amssymb}
\newcounter{char}
\setcounter{char}{1}
\loop\ifnum\value{char}<27
\edef\c{\Alph{char}}
\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\csname\expandafter\expandafter\expandafter b\expandafter\c\expandafter\endcsname\expandafter{\expandafter\mathbb\expandafter{\c}}
\addtocounter{char}{1}
\repeat
\begin{document}
\(\bZ\)
\end{document}
Я сбился со счета, сколько в нем «expandafter»! Чтобы получить строчные буквы, замените альф на альф.