
Me gustaría tener un comando que ponga todo en negrita (en modo matemático), excepto alguna lista específica de excepciones.
Por ejemplo, un comando \boldformula
que pone todos los símbolos en negrita excepto los paréntesis, de modo que
\boldformula{ a \ast ( b \ast c) }
se vuelve equivalente a
\bm{a \ast} ( \bm{b \ast c} )
¿Cualquier sugerencia?
Editar:En respuesta a un comentario de egreg. Me gustaría que las fórmulas en negrita coexistan pacíficamente con el resto del entorno matemático, preservando alineaciones, delimitadores emparejados, etc.
Si es más fácil, un comando que ponga selectivamente en negrita algunos símbolos también sería excelente. Por ejemplo, uno que ponga caracteres alfanuméricos en negrita en la fuente matemática estándar, \ast, \subset, \cap y deje todo lo demás intacto ya sería de gran ayuda.
Respuesta1
Esta es una prueba de concepto:
\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}
Sólo se declaran objetos específicos en negrita en el alcance de \boldformula
. Supongo que se necesitaría más trabajo para los delimitadores.
Respuesta2
En unicode-math
, puedes cargar un peso más ligero de una familia matemática con la range=
opción, por ejemplo:
\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 y KP Math son algunas familias de fuentes que vienen en varios pesos.
Desafortunadamente, los argumentos range=
y de no son compatibles entre sí a partir de 2020. Por lo tanto, si hace esto, tampoco podrá usar o. Esto nos impide definir esto como un estilo matemático que podemos activar y desactivar.version=
\setmathfont
\boldmath
\boldsymbol
De lo contrario, una forma de lograrlo es encerrar los símbolos en negrita en \boldsymbol{}
. También sería posible adaptar el \boldsymbol
código de amsbsy.sty
para cambiar a \mathversion{normal}
en lugar de \mathversion{bold}
. Entonces podrías hacer algo como \let\oldast=\ast
y \renewcommand\ast{\normalsymbol{\oldast}}
. Si puede crear sus propias fuentes matemáticas, también puede declarar las fuentes normales y en negrita como fuentes de símbolos matemáticos independientes.