Usando el símbolo \approx básico con MnSymbol

Usando el símbolo \approx básico con MnSymbol

Quiero usar MnSymbol (para obtener varios tipos de flechas hacia abajo), pero no me gusta su símbolo \approx. Me gustaría usar el básico en su lugar. Intenté usar savesym (como se muestra a continuación), pero aún genera la versión mnsymbol. ¿Alguna sugerencia?

\documentclass{article}
\usepackage[english]{babel}

\usepackage{savesym}
\savesymbol{approx}

\usepackage{MnSymbol}

\restoresymbol{approx}{amssymb}

\begin{document}

$\approx$

\end{document}

Editar - Pregunta adicional

La respuesta de @Steven B. Segletes funciona perfectamente para el problema tal como lo pregunté. Pero descubrí que hay muchos otros símbolos que me gustaría evitar que MnSymbol cambie. Entonces, me pregunto si podría haber una solución proveniente de la otra dirección: ¿podemos evitar que MnSymbol introduzca nuevas definiciones excepto los símbolos específicos que queremos agregar? (Los que quiero específicamente son \ndownarrow, \ndasheddownarrow y \dasheddownarrow).

...Ahora veo que @Steven B. Segletes ya respondió esto (¿Operador estándar AMS-Sum que utiliza MnSymbols?). Pero como dije en un comentario a continuación, soy un completo profano y me asusta ver todo este cambio de fuente. Entonces, si alguien tiene una solución de otro tipo, sería útil.

Respuesta1

REVISIÓN(por sugerencia de GuM)

GuM, que claramente sabe más que yo sobre el uso de fuentes LaTeX, mejora enormemente mi respuesta al vincularla a la codificación cmsyya conocida por LaTeX ( OMS) y así evita la necesidad de declarar una nueva familia de fuentes y forma. GuM también menciona el encantamiento correcto para brindar un apoyo audaz.

\documentclass{article}
%\usepackage[english]{babel}
\usepackage{MnSymbol,bm}
\DeclareSymbolFont{Xsymbols}{OMS}{cmsy}{m}{n}
\SetSymbolFont{Xsymbols}{bold}{OMS}{cmsy}{b}{n}
\DeclareMathSymbol{\Xapprox}{\mathrel}{Xsymbols}{25}

\begin{document}
$a\Xapprox b \bm{\Xapprox} c$

$a \approx b \bm{\approx} c$
\end{document}

ingrese la descripción de la imagen aquí

RESPUESTA ORIGINAL

Aquí, declaro la fuente del símbolo CM ( cmsy, ver The TeXbook, p. 431) como una nueva familia de fuentes con \DeclareFontFamily. Luego, con \DeclareFontShape, digo qué tamaños de glifo usar, según el tamaño de punto deseado (por ejemplo, cualquier cosa mayor que 12 puntos es una versión escalada de los cmsy12glifos). Luego declaro una nueva fuente de símbolo Xcmsyque utiliza la cmsyfamilia de fuentes. Finalmente, utilizo \DeclareMathSymbolpara extraer el glifo correcto de la Xcmsyfuente del símbolo y lo llamo \Xapprox. Me aseguro de que se emplee como \mathreltipo y que utilice la ranura 25( '031octal, "19hexadecimal) de esa fuente de símbolo, que corresponde al \approxsímbolo.

\documentclass{article}
%\usepackage[english]{babel}
\usepackage{MnSymbol}
\DeclareFontFamily{U} {cmsy}{}

\DeclareFontShape{U}{cmsy}{m}{n}{
  <-6> cmsy5
  <6-7> cmsy6
  <7-8> cmsy7
  <8-9> cmsy8
  <9-10> cmsy9
  <10-12> cmsy10
  <12-> cmsy12}{}

\DeclareSymbolFont{Xcmsy} {U} {cmsy}{m}{n}

\DeclareMathSymbol{\Xapprox}{\mathrel}{Xcmsy}{25}
\begin{document}
$a\Xapprox b$

$a \approx b$
\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

No hay forma de ahorrar \approxconsavesym .Sin símbolodefinido con \DeclareMathSymbollata.

Elsavesym paquete puedesolotrabajar con comandos definidos con \newcommand(siempre que el comando no tenga un argumento opcional); no funcionará si el comando está definido \DeclareRobustCommandpor los motivos descritos en la documentación de letltxmacro(ver tambiénhttps://tex.stackexchange.com/a/47372/4427).

Veamos qué pasa. Si utiliza la sintaxis correcta, es decir

\usepackage{savesym}

\show\approx

\savesymbol{approx}
\usepackage{MnSymbol}
\restoresymbol{mn}{approx}

\show\approx
\show\mnapprox

(las \showlíneas son solo para depurar) obtendrá, en la terminal,

> \approx=\mathchar"3219.

> \approx=\mathchar"3219.

> \mnapprox=\mathchar"3704.

En su lugar, mnpuede usar cualquier cadena que le guste más (para comandos que funcionan con savesym, por supuesto, no con esta).

Esto significa que \approxes un símbolo de relación ( 3), de la fuente del grupo matemático 2, slot "19.

Sin embargo, cuando se inicia el documento, MnSymbolse asigna \U/MnSymbolF/m/n/10a la fuente en el grupo matemático 2, que corresponde a MnSymbolF10. La parte relevante de la tabla de fuentes se muestra aquí:

ingrese la descripción de la imagen aquí

y de hecho, su documento se imprimirá

ingrese la descripción de la imagen aquí

que no se parece mucho a un approxsímbolo. De hecho en MnSymbol.styencontramos

\DeclareSymbolFont{symbols}{U}{MnSymbolF}{m}{n}

que anula la declaración estándar para la symbolsfuente, correspondiente al grupo matemático 2. Las asignaciones del operatorsgrupo matemático 0, lettersal grupo matemático 1, symbolsal grupo matemático 2 y largesymbolsal grupo matemático 3 son obligatorias. Más adelante, la línea 25 (25 decimal es 19hexadecimal) después de la línea 1446 (donde un contador se reinicia a cero para definir los símbolos de la symbolsfuente) tiene

\Decl@Mn@Char\dbigdoublecurlywedge{symbols}{\mathop}

lo que confirma el símbolo "inesperado" que ves en lugar de \approx. Hay que decir que MnSymbolutiliza un código muy oscuro. De hecho, como lo muestra el valor de \mnapprox, el símbolo "aproximado" proviene MnSymbolde la fuente del grupo matemático 7, ranura "04.

El único camino a seguir es con una \DeclareSymbolFontestrategia como la que se describe en la excelente respuesta de Steven.

Respuesta3

Editar:

Leí los comandos de savesymbol y restaurar símbolo.

Cuando guarda el "aprox", se crea el "origapprox"

Cuando restaura "aprox" con el comando:

\restore{last}{approx}

entonces "approx" debe volver a ser el mismo que "origapprox" que se guardó y "lastapprox" se convertirá en el último valor de approx antes de restaurar.

Entonces si tenemos el siguiente código:

\documentclass{article}
\usepackage[english]{babel}
\usepackage{savesym}
\savesymbol{approx}


\usepackage{MnSymbol}

\restoresymbol{UnwantedChanged}{approx}


\begin{document}

$\approx$


$\origapprox$


$\UnwantedChangedapprox$
\end{document}

estamos esperando un approx con el símbolo de MnSymbol un origapprox con el símbolo antes de la carga de MnSymbol y un UnwantedChangedapprox con MnSymbol cargado

pero el código anterior proporciona el símbolo aproximado real solo en la última fila.

Al eliminar la última línea de impresión y el comando de restauración, vi que el comando savesymbol ya había restaurado el símbolo y estaba imprimiendo como aprox el antiguo approx y como origapprox el último...

Esto significa que para resolver tu problema solo tienes que eliminar el comando de restauración... No sé por qué... puede ser que el código en savesym haya sido cambiado y se restaure automáticamente después de cargar un nuevo símbolo o puede ser que MnSymbol haga esto truco

Respuesta anterior: (para entender el primer comentario -justo- de @ StevenB.Segletes)

Escribiste el comando con argumentos opuestos. Intentar:

\restoresymbol{approx}{amssymb}

información relacionada