Verwenden des grundlegenden \approx-Symbols mit MnSymbol

Verwenden des grundlegenden \approx-Symbols mit MnSymbol

Ich möchte MnSymbol verwenden (um verschiedene Arten von Abwärtspfeilen zu erhalten), aber das \approx-Symbol gefällt mir nicht. Stattdessen würde ich gerne das Basissymbol verwenden. Ich habe versucht, savesym zu verwenden (siehe unten), aber das gibt immer noch die mnsymbol-Version aus. Irgendwelche Vorschläge?

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

\usepackage{savesym}
\savesymbol{approx}

\usepackage{MnSymbol}

\restoresymbol{approx}{amssymb}

\begin{document}

$\approx$

\end{document}

Bearbeiten – Zusätzliche Frage

Die Antwort von @Steven B. Segletes funktioniert perfekt für das Problem, wie ich es gestellt habe. Aber ich habe festgestellt, dass es eine Reihe anderer Symbole gibt, bei denen ich verhindern möchte, dass MnSymbol sie ändert. Daher frage ich mich, ob es eine Lösung aus der anderen Richtung geben könnte: Können wir verhindern, dass MnSymbol neue Definitionen einführt, außer den spezifischen Symbolen, die wir hinzufügen möchten? (Die, die ich speziell möchte, sind \ndownarrow, \ndasheddownarrow und \dasheddownarrow.)

...Ich sehe jetzt, dass @Steven B. Segletes dies bereits beantwortet hat (Standard-AMS-Summenoperator mit MnSymbols?). Aber wie ich in einem Kommentar unten sagte, bin ich ein absoluter Laie und bekomme Angst, wenn ich mir all dieses Zeugs mit der Schriftartänderung ansehe. Wenn also jemand eine Lösung anderer Art hat, wäre das hilfreich.

Antwort1

REVISION(auf Vorschlag von GuM)

GuM, der offensichtlich mehr über die Verwendung von LaTeX-Schriftarten weiß als ich, verbessert meine Antwort enorm, indem er die in cmsyLaTeX bereits bekannte Kodierung ( OMS) verwendet und so die Notwendigkeit vermeidet, eine neue Schriftfamilie und -form zu deklarieren. GuM ruft außerdem die richtige Beschwörungsformel auf, um auch Fettschrift zu unterstützen.

\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}

Bildbeschreibung hier eingeben

URSPRÜNGLICHE ANTWORT

Hier deklariere ich die CM-Symbolschriftart ( cmsy, siehe The TeXbook, S. 431) mit als neue Schriftfamilie \DeclareFontFamily. Dann \DeclareFontShapegebe ich mit an, welche Glyphengrößen verwendet werden sollen, basierend auf der gewünschten Punktgröße (z. B. ist alles, was größer als 12 Punkte ist, eine skalierte Version der cmsy12Glyphen). Dann deklariere ich eine neue Symbolschriftart Xcmsy, die die cmsySchriftfamilie verwendet. Schließlich verwende ich , \DeclareMathSymbolum die richtige Glyphe aus der XcmsySymbolschriftart zu extrahieren und nenne sie \Xapprox. Ich stelle sicher, dass sie als Typ verwendet wird und den Slot ( Oktal, Hex) dieser Symbolschriftart \mathrelverwendet , der dem Symbol entspricht.25'031"19\approx

\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}

Bildbeschreibung hier eingeben

Antwort2

Es besteht keine Möglichkeit zum Speichern \approxmit savesym.Kein Symboldefiniert mit \DeclareMathSymbolkann.

Das savesymPaket kannnurfunktioniert mit Befehlen, die mit definiert sind \newcommand(vorausgesetzt der Befehl hat kein optionales Argument); es funktioniert nicht, wenn der Befehl mit definiert ist, \DeclareRobustCommandaus Gründen, die in der Dokumentation von beschrieben sind letltxmacro(siehe auchhttps://tex.stackexchange.com/a/47372/4427).

Mal sehen, was passiert. Wenn Sie die richtige Syntax verwenden, d. h.

\usepackage{savesym}

\show\approx

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

\show\approx
\show\mnapprox

(die \showZeilen dienen nur zum Debuggen) Sie erhalten auf dem Terminal

> \approx=\mathchar"3219.

> \approx=\mathchar"3219.

> \mnapprox=\mathchar"3704.

Anstelle von mnkönnen Sie jede beliebige Zeichenfolge verwenden, die Ihnen besser gefällt ( savesymnatürlich für Befehle, die mit funktionieren, nicht diese).

Das bedeutet, dass es \approxsich um ein Relationssymbol ( 3), aus der Schriftart in der mathematischen Gruppe 2, Slot handelt "19.

MnSymbolBeim Starten des Dokuments weist jedoch \U/MnSymbolF/m/n/10der Schriftart in der mathematischen Gruppe zu 2, was entspricht MnSymbolF10. Der relevante Teil der Schriftartentabelle wird hier angezeigt:

Bildbeschreibung hier eingeben

und tatsächlich wird Ihr Dokument gedruckt

Bildbeschreibung hier eingeben

was nicht sehr viel mit einem approxSymbol zu tun hat. Tatsächlich MnSymbol.styfinden wir in

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

Dies überschreibt die Standarddeklaration für die symbolsSchriftart, die der mathematischen Gruppe 2 entspricht. Die Zuweisungen operatorszur mathematischen Gruppe 0, letterszur mathematischen Gruppe 1, symbolszur mathematischen Gruppe 2 und largesymbolszur mathematischen Gruppe 3 sind obligatorisch. Später hat die 25. Zeile (25 dezimal ist 19hexadezimal) nach Zeile 1446 (wo ein Zähler zum Definieren der Symbole aus der symbolsSchriftart auf Null zurückgesetzt wird)

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

was das „unerwartete“ Symbol bestätigt, das Sie anstelle von sehen \approx. Es muss gesagt werden, dass sehr obskurer Code verwendet wird. Tatsächlich stammt das „Approximiert“-Symbol in , MnSymbolwie der Wert von zeigt , aus der Schriftart in der mathematischen Gruppe 7, Slot .\mnapproxMnSymbol"04

Der einzige Weg ist eine \DeclareSymbolFontStrategie, wie sie in Stevens toller Antwort beschrieben wird.

Antwort3

Bearbeiten:

Ich habe die Befehle „Savesymbol“ und „Restoresymbol“ gelesen.

Wenn Sie das "Approximative" speichern, wird das "origapprox" erstellt.

Bei der Wiederherstellung von „ungefähr“ verwenden Sie den folgenden Befehl:

\restore{last}{approx}

dann muss „approx“ wieder mit dem gespeicherten „origapprox“ übereinstimmen und „lastapprox“ wird zum letzten Wert von „approx“ vor der Wiederherstellung.

Wenn wir also den nächsten Code haben:

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


\usepackage{MnSymbol}

\restoresymbol{UnwantedChanged}{approx}


\begin{document}

$\approx$


$\origapprox$


$\UnwantedChangedapprox$
\end{document}

wir erwarten ein approx mit dem Symbol von MnSymbol ein origapprox mit dem Symbol vor dem Laden von MnSymbol und ein UnwantedChangedapprox mit geladenem MnSymbol

aber der obige Code gibt das echte Approx-Symbol nur in der letzten Zeile aus.

Durch das Entfernen der letzten Druckzeile und des Wiederherstellungsbefehls sah ich, dass der Befehl „Savesymbol“ das Symbol bereits wiederhergestellt hatte und ungefähr das alte ungefähr und ungefähr das letzte ungefähr druckte ...

Das bedeutet, dass Sie zur Lösung Ihres Problems nur den Wiederherstellungsbefehl entfernen müssen ... Ich weiß nicht, warum ... möglicherweise wurde der Code in Savesym geändert und stellt nach dem Laden eines neuen Symbols automatisch wieder her, oder möglicherweise macht MnSymbol diesen Trick

Alte Antwort: (um den ersten -fairen- Kommentar von @StevenB.Segletes zu verstehen)

Sie haben den Befehl mit entgegengesetzten Argumenten geschrieben. Versuchen Sie:

\restoresymbol{approx}{amssymb}

verwandte Informationen