
Eu gostaria de ter um comando que deixasse tudo em negrito (no modo matemático), exceto por alguma lista especificada de exceções.
Por exemplo, um comando \boldformula
que coloca todos os símbolos em negrito, exceto os parênteses, para que
\boldformula{ a \ast ( b \ast c) }
torna-se equivalente a
\bm{a \ast} ( \bm{b \ast c} )
Alguma sugestão?
Editar:Em resposta a um comentário de egreg. Gostaria que as fórmulas em negrito coexistissem pacificamente com o restante do ambiente matemático, preservando alinhamentos, delimitador emparelhado etc.
Se for mais fácil, um comando que coloque alguns símbolos em negrito seletivo também seria ótimo. Por exemplo, aquele que cria caracteres alfanuméricos em negrito na fonte matemática padrão, \ast, \subset, \cap e deixa todo o resto intacto já seria de grande ajuda.
Responder1
Esta é uma prova de conceito:
\documentclass{article}
\usepackage{amsmath,bm}
%\usepackage{xparse} % not needed for LaTeX 2020-10-01 or later
\ExplSyntaxOn
\cs_new_protected:Nn \vigolo_embolden_command:N
{
\cs_set_eq:cN { __vigolo_ \cs_to_str:N #1 : } #1
\cs_set_protected:Npn #1 { \bm { \use:c { __vigolo_ \cs_to_str:N #1 : } } }
}
\cs_new_protected:Nn \vigolo_embolden_char:n
{
\exp_args:Nc \mathchardef { __vigolo_#1: } = \mathcode`#1 \scan_stop:
\cs_set_protected:cn { __vigolo_#1_bold: } { \bm { \use:c { __vigolo_#1: } } }
\char_set_active_eq:nc { `#1 } { __vigolo_#1_bold: }
\mathcode`#1 = "8000 \scan_stop:
}
\cs_new_protected:Nn \vigolo_embolden:
{
\clist_map_function:nN
{% fill up
A,B,C,D,
a,b,c,d,
*,+,-,
}
\vigolo_embolden_char:n
\clist_map_function:nN
{% fill up
\ast,\langle,\rangle,\rightarrow,\to,\subset,
}
\vigolo_embolden_command:N
}
\NewDocumentCommand{\boldformula}{m}
{
\group_begin:
\vigolo_embolden:
#1
\group_end:
}
\ExplSyntaxOff
\begin{document}
$\boldformula{ a \ast ( b \ast c)\subset A }+abc$
$\bm{ a \ast ( b \ast c)\subset A }+abc$ (for comparison)
\end{document}
Apenas objetos específicos são declarados em negrito no escopo do \boldformula
. Mais trabalho seria necessário para delimitadores, eu acho.
Responder2
No unicode-math
, você pode carregar um peso mais leve de uma família matemática com a range=
opção, por exemplo:
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{XITS Math Bold}
\setmathfont{XITS Math}[range=\ast]
\begin{document}
\[ A \ast B \ast C \]
\end{document}
Minion Math e KP Math são algumas famílias de fontes que vêm em vários pesos.
Infelizmente, os argumentos range=
e de não são compatíveis entre si, a partir de 2020. Portanto, se você fizer isso, também não poderá usar ou. Isso nos impede de definir isso como um estilo matemático que podemos ativar e desativar.version=
\setmathfont
\boldmath
\boldsymbol
Caso contrário, uma maneira de fazer isso é agrupar os símbolos em negrito \boldsymbol{}
. Também seria possível adaptar o \boldsymbol
código de amsbsy.sty
para mudar para \mathversion{normal}
em vez de \mathversion{bold}
. Você poderia então fazer algo como \let\oldast=\ast
e \renewcommand\ast{\normalsymbol{\oldast}}
. Se você puder criar suas próprias fontes matemáticas, também poderá declarar as fontes normal e em negrito como fontes de símbolos matemáticos separadas.