Tornando cada símbolo em negrito com lista de exceções/exclusões

Tornando cada símbolo em negrito com lista de exceções/exclusões

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 \boldformulaque 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.

insira a descrição da imagem aqui

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 \boldsymbolcódigo de amsbsy.stypara mudar para \mathversion{normal}em vez de \mathversion{bold}. Você poderia então fazer algo como \let\oldast=\aste \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.

informação relacionada