Wie können Sie Argmin oder Argmax in Latex erhalten? Zwei Lösungen, die ich gefunden habe, sind:
\underset{x}{\operatorname{argmax}} \DeclareMathOperator*{\argmin}{arg\,min}
Irgendwelche anderen Ideen?
[1] http://www.breakthru.altervista.org/?p=27
[2] http://researchonsearch.blogspot.com/2007/05/enter-argmax-argmin-in-latex.html
Kommentare
- Wie fühlen sich diese Lösungen (insbesondere die zweite) nicht richtig an? Die
\DeclareMathOperator
ist in diesem Fall der Weg. - Ich persönlich mag das Aussehen von
- wie funktioniert es in Jupyter?
Antwort
Wie Pieter betonte, ist die korrekte Definition von Argmin- und Argmax-Operatoren in LaTeX:
\usepackage{amsmath} \DeclareMathOperator*{\argmax}{arg\,max} \DeclareMathOperator*{\argmin}{arg\,min}
Verwenden Sie tatsächlich die würde ausreichen, wird jedoch intern von amsmath
geladen, was ohnehin für den mathematischen Satz empfohlen wird.
Die *
in \DeclareMathOperator*
platziert das unterstrichene Argument unter dem Wort und nicht rechts unten.
Kommentare
- Wenn Sie
\DeclareMathOperator*{\argmin}{\arg\!\min}
verwenden, wird der hässliche Raum zwischenarg
undmin
. - @rbp Warum sollte man
\arg\min
verwenden, wenn einfachargmin
macht dasselbe? - @egreg Sie ‚ haben Recht. Ich bin durch Experimente mit anderen Optionen zu diesem gekommen und habe ‚ nicht zurückgeschaut 🙂
- In ConTeXt heißt das:
\definemathcommand [argmin] [limop] {\mfunction{arg\,min}}
- Erläuterung: Ich habe den dünnen Abstand (\,) zwischen arg und min belassen, da ‚ das ist, was das Originalplakat in der Frage, also nahm ich an, dass sie den Raum dort wollten. Persönlich würde ich nur
\DeclareMathOperator*{\argmin}{argmin}
ohne Leerzeichen ausführen.
Antwort
Zusammenfassung
In der Folge wird LaTeX angenommen.
Vorfragen
1. Sollte ein dünner Raum „arg“ von „min“ trennen?
Dies ist eine Frage der persönlichen Präferenz. Die Standarddefinition für \limsup
hat ein dünnes Leerzeichen. Andererseits wird „arcsin“ normalerweise ohne Leerzeichen zwischen den beiden Komponenten geschrieben. Konsistenz ist wie immer das Schlüsselwort: Die Verwendung einer Makrodefinition stellt dies sicher und erleichtert auch das Ändern des Satzes im gesamten Dokument, wenn ein Wechsel von einer Option zu einer anderen erforderlich ist.
2. Sollten die Grenzwerte im Anzeigestil unter den Operator fallen?
Auch dies ist umstritten, und die in dem Feld, für das das Dokument geschrieben wurde, verwendeten Konventionen sollten befolgt werden.
3. Sollte der Operatorname aufrecht gesetzt werden?
Definitiv wie alle anderen Operator- / Funktionsnamen wie Sinus und Cosinus.
Verfügbare Werkzeuge
1. amsmath
Mit amsmath
kann in der Präambel
\DeclareMathOperator*{\argmin}{arg\,min} % thin space, limits underneath in displays \DeclareMathOperator*{\argmin}{argmin} % no space, limits underneath in displays \DeclareMathOperator{\argmin}{arg\,min} % thin space, limits on side in displays \DeclareMathOperator{\argmin}{argmin} % no space, limits on side in displays
Natürlich sollte nur eine davon verwendet werden. In dem Dokument ist es ausreichend, \argmin
einzugeben, und der Abstand um den Operator ist gemäß den allgemeinen Regeln des mathematischen Satzes der richtige.
Das scheinbar anders
\newcommand{\argmin}{\operatornamewithlimits{argmin}}
ist nicht wirklich so, weil es im Wesentlichen dasselbe ist wie \DeclareMathOperator*{\argmin}{argmin}
; Außerdem wird ein veralteter Befehl verwendet, der \operatorname*
sein sollte.
2. Kein Paket
Die folgenden Definitionen sind den obigen sehr ähnlich, in derselben Reihenfolge
\newcommand{\argmin}{\mathop{\mathrm{arg\,min}} \newcommand{\argmin}{\mathop{\mathrm{argmin}} \newcommand{\argmin}{\mathop{\mathrm{arg\,min}\nolimits} \newcommand{\argmin}{\mathop{\mathrm{argmin}\nolimits}
Mit \underset
\underset{x}{\mathrm{argmin}}
Dies wurde auch in der Frage und in einer Antwort erwähnt, ist aber falsch, wie der visuelle Vergleich zeigen wird.
3. Unterschiede
Die Version „kein Paket“ ist viel starrer als die Version amsmath
, da dieses Paket die nonamelimits
Option, die automatisch alle Operatoren wie \lim
, \max
ändert, unter denen normalerweise Grenzwerte liegen (in Displays), um sie auf der Seite zu haben. Die gleiche Option würde natürlich auch für neu definierte Operatoren gelten, vorausgesetzt, \DeclareMathOperator*
wurde verwendet.
Testdokument
Im folgenden Test Dokument werden die vorgeschlagenen Definitionen oder Konstruktionen verglichen.
\documentclass{article} \usepackage{amsmath} % limits underneath \DeclareMathOperator*{\argminA}{arg\,min} % Jan Hlavacek \DeclareMathOperator*{\argminB}{argmin} % Jan Hlavacek \DeclareMathOperator*{\argminC}{\arg\min} % rbp \newcommand{\argminD}{\arg\!\min} % AlfC \newcommand{\argminE}{\mathop{\mathrm{argmin}}} % ASdeL \newcommand{\argminF}{\mathop{\mathrm{argmin}}\limits} % ASdeL % limits on side \DeclareMathOperator{\argminG}{arg\,min} % Jan Hlavacek \DeclareMathOperator{\argminH}{argmin} % Jan Hlavacek \newcommand{\argminI}{\mathop{\mathrm{argmin}}\nolimits} % ASdeL \newcommand{\cs}[1]{\texttt{\symbol{`\\}#1}} \begin{document} \begin{align} &\cs{argminA} & \argminA_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \\ &\cs{argminB} & \argminB_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \\ &\cs{argminC} & \argminC_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \\ &\cs{argminD} & \argminD_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \\ &\cs{argminE} & \argminE_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \\ &\cs{argminF} & \argminF_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \\ &\cs{underset} & \underset{x}{\mathrm{argmin}} f(x) &= \{x \mid f(x) = \min_{x"} f(x")\}\\ &\cs{argminG} & \argminG_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \\ &\cs{argminH} & \argminH_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \\ &\cs{argminI} & \argminI_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \end{align} \end{document}
Ergebnisse
Wie vorhergesagt, werden viele Zeilen gleich gesetzt. Die mit \mathop
definierten Makros befolgen jedoch nicht die Option nonamelimits
. Auch das Ergebnis von \argminD
ist eindeutig falsch, da der Grenzwert unter „max“ und nicht unter dem gesamten Operatornamen gesetzt wird.
Die Konstruktion mit \underset
ist falsch, da nach dem Operator nicht der richtige Abstand verwendet wird: Ein dünnes Leerzeichen folgt allen anderen und ist der richtige Weg zum Satz . Vergleichen Sie \sin x
und \mathrm{sin}x
, um diesen dünnen Raum in einem anderen Kontext zu sehen.
Beachten Sie, dass \argminC
und \argminA
ergeben das gleiche Ergebnis sowie \argminD
und \argminB
. Erläuterung: \arg
und \max
sind bereits als Operatoren definiert, sodass TeX ein dünnes Leerzeichen einfügt, wenn eines direkt einem anderen folgt. Wenn Sie \argminC
oder \argminD
verwenden, dreht TeX nur ein wenig mehr, ohne Vorteil gegenüber \argminA
oder \argminB
.
Kommentare
- Dies sollte die akzeptierte Antwort sein.
- Ist ‚ t
\newcommand{\argmin}{\operatornamewithlimits{argmin}}
nicht anders, da ‚amsmath
Paket? - @HomeroEsmeraldo
\operatornamewithlimits
ist ein veralteter Befehl, der durchamsopn
(ein vonamsmath
geladenes Paket, das nur selten von sich selbst verwendet wird). - Danke. Aus irgendeinem Grund lieferte nur
\underset
zufriedenstellende Ergebnisse für with (wobei x unter argmin steht und nicht daneben liegt). - Wie funktioniert es in Jupyter? ?
Antwort
Ich verwende \newcommand{\argmin}{\operatornamewithlimits{argmin}}
.
Kommentare
- +1 Ich mag das – warum Dinge zu kompliziert? Dies sieht genauso aus wie die Antwort
\DeclareMathOperator*
. - Dies ergibt “ argmin „. Um “ arg min “ (wohl die üblichste Notation) zu erhalten, setzen Sie es auf
{arg\,min}
. - Google gab mir 669.000 Antworten für “ arg min “ und 520.000 Antworten für “ argmin „, daher würde ich ‚ ein Unentschieden nennen. 😉
- das funktioniert …? Fehlt eine Importanweisung?
- Google Scholar hat mir 171.000 für “ arg min “ und 116.000 für “ argmin „.
Antwort
Verwenden Sie \usepackage{amsmath}
und dann:
\operatorname*{argmin}_\theta f(x)
Oder ähnlich (zum Hinzufügen eines Leerzeichens)
\operatorname*{arg\,max}_\theta f(x)
Kommentare
- prägnant und auf den Punkt!
Antwort
Eine weitere Alternative (in gewissem Sinne die schlechtere Lösung, siehe Kommentar unten) könnte darin bestehen, \argmin
in Bezug auf \min
und \arg
Befehle.
\newcommand{\argmin}{\arg\!\min}
Auf diese Weise verhält sich 1) \argmin
immer gleich als \min
, 2) braucht amsmath
nicht oder kümmert sich nicht um \operator...
Befehle 3) Ja, die Variable ist nicht zentriert (sie ist im Teil min
zentriert ), aber das kann sogar das sein, was Sie wollen (da es auf die gleiche Weise zentriert ist wie ein \min
, auch das „g“ in \arg
senkt das Unterargument nicht weiter).
\documentclass[fleqn]{article} \newcommand{\argmin}{\arg\!\min} \begin{document} \[ \argmin_x f(x) = \{x | f(x) = \min_{x"} f(x")\} \] \[ \min_x f(x) = \{f(x) | f(x) < f(x_0) \forall x_0 \in R \] \end{document}
Kommentare
- Dies ‚ sieht nicht nach einer guten Idee aus.
\argmin_{x\in X\cap Y} f(x)
wird es vollständig beschädigen. - Wofür ist der Befehl
\arg
überhaupt? - @ThomasAhle,
arg
steht für die Argumentfunktion (Winkel in der komplexen Ebene, $ z = | z | e ^ {i \ arg z} $. Tohecz ist übrigens richtig. - @ boycott.se-yo ‚, guter Punkt.
Antwort
oder Sie können den Befehl underset verwenden. Beispiel:
R = \underset{n} {\mathrm{argmax}} ~P(L_n|\mathbf{x})
Kommentare
- Bitte verwenden Sie dies nicht ‚. Dies macht
argmin
zu einemmathord
anstelle einesmathop
und der Abstand ist falsch. Außerdem werden die Grenzwerte im Inline-Mathematikmodus nicht automatisch angepasst.
Antwort
Ich würde \mathop
und \mathrm
und schließlich \limits
oder \nolimits
, abhängig vom gewünschten Verhalten in Kombination mit _
und ^
. Siehe unten.
\documentclass{article} \begin{document} { nothing: \newcommand{\argmin}{\mathop{\mathrm{argmin}}} $\argmin_a^b$ $$\argmin_a^b$$ } { limits: \newcommand{\argmin}{\mathop{\mathrm{argmin}}\limits} $\argmin_a^b$ $$\argmin_a^b$$ } { nolimits: \newcommand{\argmin}{\mathop{\mathrm{argmin}}\nolimits} $\argmin_a^b$ $$\argmin_a^b$$ } \end{document}
Antwort
Dies funktioniert ohne zusätzliches Paket. Es wird jedoch eine neue Zeile erstellt.
$$\pi(s) = arg\max_\theta$$
Kommentare
-
$$...$$
wird für die Verwendung mit LaTeX nicht empfohlen. Verwenden Sie besser\[ ... \]
für den korrekten vertikalen Abstand. - Diese Lösung setzt argmax nicht richtig. Hier ist arg kursiv (und mit schlechtem Abstand) und max ist aufrecht.