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 cmsy
LaTeX 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}
URSPRÜNGLICHE ANTWORT
Hier deklariere ich die CM-Symbolschriftart ( cmsy
, siehe The TeXbook, S. 431) mit als neue Schriftfamilie \DeclareFontFamily
. Dann \DeclareFontShape
gebe 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 cmsy12
Glyphen). Dann deklariere ich eine neue Symbolschriftart Xcmsy
, die die cmsy
Schriftfamilie verwendet. Schließlich verwende ich , \DeclareMathSymbol
um die richtige Glyphe aus der Xcmsy
Symbolschriftart zu extrahieren und nenne sie \Xapprox
. Ich stelle sicher, dass sie als Typ verwendet wird und den Slot ( Oktal, Hex) dieser Symbolschriftart \mathrel
verwendet , 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}
Antwort2
Es besteht keine Möglichkeit zum Speichern \approx
mit savesym
.Kein Symboldefiniert mit \DeclareMathSymbol
kann.
Das savesym
Paket kannnurfunktioniert mit Befehlen, die mit definiert sind \newcommand
(vorausgesetzt der Befehl hat kein optionales Argument); es funktioniert nicht, wenn der Befehl mit definiert ist, \DeclareRobustCommand
aus 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 \show
Zeilen dienen nur zum Debuggen) Sie erhalten auf dem Terminal
> \approx=\mathchar"3219.
> \approx=\mathchar"3219.
> \mnapprox=\mathchar"3704.
Anstelle von mn
können Sie jede beliebige Zeichenfolge verwenden, die Ihnen besser gefällt ( savesym
natürlich für Befehle, die mit funktionieren, nicht diese).
Das bedeutet, dass es \approx
sich um ein Relationssymbol ( 3
), aus der Schriftart in der mathematischen Gruppe 2
, Slot handelt "19
.
MnSymbol
Beim Starten des Dokuments weist jedoch \U/MnSymbolF/m/n/10
der Schriftart in der mathematischen Gruppe zu 2
, was entspricht MnSymbolF10
. Der relevante Teil der Schriftartentabelle wird hier angezeigt:
und tatsächlich wird Ihr Dokument gedruckt
was nicht sehr viel mit einem approx
Symbol zu tun hat. Tatsächlich MnSymbol.sty
finden wir in
\DeclareSymbolFont{symbols}{U}{MnSymbolF}{m}{n}
Dies überschreibt die Standarddeklaration für die symbols
Schriftart, die der mathematischen Gruppe 2 entspricht. Die Zuweisungen operators
zur mathematischen Gruppe 0, letters
zur mathematischen Gruppe 1, symbols
zur mathematischen Gruppe 2 und largesymbols
zur mathematischen Gruppe 3 sind obligatorisch. Später hat die 25. Zeile (25 dezimal ist 19
hexadezimal) nach Zeile 1446 (wo ein Zähler zum Definieren der Symbole aus der symbols
Schriftart 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 , MnSymbol
wie der Wert von zeigt , aus der Schriftart in der mathematischen Gruppe 7, Slot .\mnapprox
MnSymbol
"04
Der einzige Weg ist eine \DeclareSymbolFont
Strategie, 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}