LINUX.ORG.RU

Latex: как автоматизировать жирный шрифт добавлением буквы в конце оператора?

 


0

1

Каждый нужный мне символ жирным шрифтом я определяю тем же оператором с добавлением буквы B в конце, например, \newcommand{\etaB}{\bm{\eta}}. А каллиграфический добавлением C в конце, например, \newcommand{\EC}{\mathcal{E}}. Так удобно запоминать. Вопрос - нельзя ли как то это автоматизировать, так чтобы добавление к оператору в конце буквы B автоматически означало этот же символ в толстом виде, а буквы C - каллиграфическом? Известными мне методами я не понимаю как это сделать.

★★★★

Как ты хочешь, сделать нельзя. Латех будет интерпретировать \etaB как одну команду, которая не определена. Но можно определить все тебе нужные команды в цикле. Для латинских букв, например, как здесь: https://tex.stackexchange.com/questions/57036/defining-new-commands-inside-a-for-loop

TeopeTuK ★★★★★
()
Ответ на: комментарий от TeopeTuK

Для букв это работает, что уже неплохо, но для операторов типа греческих букв нет. У \alpha уже есть \ и метода не прокатывает. Или как-то можно модернезировать, предложенные в ссылке схемы для греческих букв?

rustamych ★★★★
() автор топика
Ответ на: комментарий от TeopeTuK

Соорудил подходящее для себя решение:

\documentclass{article}
\usepackage{amsmath,bm}
\usepackage{etoolbox}
% 
\begingroup\lccode`\|=`\\
\lowercase{\endgroup\def\removebs#1{\if#1|\else#1\fi}}
\newcommand{\macroname}[1]{\expandafter\removebs\string#1}
\newcommand{\define}[4]{\expandafter#1\csname\macroname{#4}#3\endcsname{#2{#4}}}
\forcsvlist{\define{\newcommand}{\mathcal}{C}}{A,B,C}
\forcsvlist{\define{\newcommand}{\bm}{B}}{\alpha,\beta,\omega}
%
\begin{document}
$\AC,\BC,\CC$ $\alphaB,\betaB,\omegaB$
\end{document}
Команда \macroname убирает \ из \alpha, например. В таком виде даже удобнее, поскольку задействован не весь алфавит, а свой, конкретный список, который можно дополнять. Спасибо за наводку.

rustamych ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.