Come puoi ottenere argmin o argmax in Latex? Due soluzioni che ho trovato sono:
\underset{x}{\operatorname{argmax}} \DeclareMathOperator*{\argmin}{arg\,min}
Altre idee?
[1] http://www.breakthru.altervista.org/?p=27
[2] http://researchonsearch.blogspot.com/2007/05/enter-argmax-argmin-in-latex.html
Commenti
Risposta
Come ha sottolineato Pieter, il modo corretto per definire gli operatori argmin e argmax in LaTeX è:
\usepackage{amsmath} \DeclareMathOperator*{\argmax}{arg\,max} \DeclareMathOperator*{\argmin}{arg\,min}
In realtà, usando sarebbe sufficiente ma” viene caricato da amsmath
internamente, il che è comunque consigliato per la composizione matematica.
Il *
in \DeclareMathOperator*
inserisce largomento sottolineato sotto la parola anziché in basso a destra.
Commenti
- Se utilizzi
\DeclareMathOperator*{\argmin}{\arg\!\min}
ti sbarazzi del brutto spazio traarg
emin
. - @rbp Perché si dovrebbe usare
\arg\min
quando semplicementeargmin
fa lo stesso? - @egreg tu ‘ hai ragione. Sono arrivato a questo da alcuni esperimenti con altre opzioni e non ‘ guardato indietro 🙂
- In ConTeXt che è:
\definemathcommand [argmin] [limop] {\mfunction{arg\,min}}
- Spiegazione: ho lasciato lo spazio sottile (\,) tra arg e min perché ‘ è ciò che il poster originale aveva nel domanda, quindi ho pensato che volessero lo spazio lì. Personalmente farei solo
\DeclareMathOperator*{\argmin}{argmin}
, senza lo spazio.
Rispondi
Riepilogo
Nel seguito si assume LaTeX.
Domande preliminari
1. Uno spazio sottile dovrebbe separare “arg” da “min”?
Questa è una questione di preferenze personali. La definizione predefinita di \limsup
ha uno spazio sottile, daltra parte “arcsin” viene solitamente scritto senza uno spazio tra i due componenti. La coerenza è, come sempre, la parola chiave: luso di una definizione di macro la garantirà e anche la facilità nel modificare la composizione tipografica dellintero documento, se è necessario passare da unopzione allaltra.
2. I limiti dovrebbero andare al di sotto delloperatore nello stile di visualizzazione?
Anche questo è discutibile e dovrebbero essere seguite le convenzioni usate nel campo per cui è scritto il documento.
3. Il nome delloperatore dovrebbe essere scritto in verticale?
Sicuramente, come tutti gli altri nomi di operatori / funzioni come seno e coseno.
Strumenti disponibili
1. amsmath
Con amsmath
si può fare, nel preambolo,
\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
Ovviamente, solo uno di questi dovrebbe essere usato. Nel documento è sufficiente digitare \argmin
e la spaziatura attorno alloperatore sarà quella giusta secondo le regole comuni della composizione matematica.
Lapparentemente diverso
\newcommand{\argmin}{\operatornamewithlimits{argmin}}
non è proprio così, perché “è essenzialmente lo stesso di \DeclareMathOperator*{\argmin}{argmin}
; inoltre utilizza un comando deprecato, che dovrebbe essere \operatorname*
.
2. Nessun pacchetto
Le seguenti definizioni sono molto simili a quelle precedenti, nello stesso ordine
\newcommand{\argmin}{\mathop{\mathrm{arg\,min}} \newcommand{\argmin}{\mathop{\mathrm{argmin}} \newcommand{\argmin}{\mathop{\mathrm{arg\,min}\nolimits} \newcommand{\argmin}{\mathop{\mathrm{argmin}\nolimits}
Con \underset
\underset{x}{\mathrm{argmin}}
Anche questo è stato menzionato nella domanda e in una risposta, ma è sbagliato, come mostrerà il confronto visivo.
3. Differenze
La versione “senza pacchetto” è molto più rigida della versione amsmath
, perché questo pacchetto può ricevere il nonamelimits
che cambierà automaticamente tutti operatori come \lim
, \max
che di solito hanno limiti sotto (in display) per averli sul lato. La stessa opzione ovviamente agirà anche su operatori appena definiti, a condizione che sia stato utilizzato \DeclareMathOperator*
.
Documento di prova
Nel seguente test documento, verranno confrontate le definizioni o le costruzioni proposte.
\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}
Risultati
Come previsto, molte righe compongono lo stesso. Tuttavia, le macro definite con \mathop
non obbediranno allopzione nonamelimits
. Anche il risultato di \argminD
è chiaramente sbagliato, poiché il limite è composto da un valore inferiore a “max” e non al di sotto dellintero nome delloperatore.
La costruzione con \underset
è sbagliata perché non utilizzerà la spaziatura corretta dopo loperatore: uno spazio sottile segue tutti gli altri ed è il modo giusto per comporre . Confronta \sin x
e \mathrm{sin}x
per vedere questo spazio sottile in un contesto diverso.
Tieni presente che \argminC
e \argminA
danno lo stesso risultato, così come \argminD
e \argminB
. Spiegazione: \arg
e \max
sono già definiti come operatori, quindi TeX inserisce uno spazio sottile se uno segue direttamente un altro. Lutilizzo di \argminC
o \argminD
fa semplicemente girare un po di più TeX, senza alcun vantaggio su \argminA
o \argminB
.
Commenti
- Questa dovrebbe essere la risposta accettata.
- ‘ t
\newcommand{\argmin}{\operatornamewithlimits{argmin}}
diverso in quanto ‘ non utilizzaamsmath
package? - @HomeroEsmeraldo
\operatornamewithlimits
è un comando obsoleto definito daamsopn
(un pacchetto caricato daamsmath
, usato raramente da solo). - Grazie. Per qualche motivo solo
\underset
ha fornito risultati soddisfacenti per with (con x sotto argmin, non adiacente). - e come farlo funzionare in Jupyter ?
Risposta
Uso \newcommand{\argmin}{\operatornamewithlimits{argmin}}
.
Commenti
- +1 Mi piace – perché le cose complicate? Sembra esattamente lo stesso della
\DeclareMathOperator*
risposta. - Questo produce ” argmin “. Per ottenere ” arg min ” (probabilmente la notazione più comune), impostalo su
{arg\,min}
. - Google mi ha fornito 669.000 risposte per ” arg min ” e 520.000 risposte per ” argmin “, quindi ‘ lo definirei un pareggio. 😉
- funziona …? manca una dichiarazione di importazione?
- Google Scholar mi ha procurato 171.000 per ” arg min ” e 116.000 per ” argmin “.
Risposta
Utilizza \usepackage{amsmath}
e poi:
\operatorname*{argmin}_\theta f(x)
O in modo simile (per aggiungere uno spazio),
\operatorname*{arg\,max}_\theta f(x)
Commenti
- conciso e al punto!
Risposta
Unaltra alternativa (in un certo senso la soluzione più scadente in circolazione, vedi il commento sotto), potrebbe essere quella di definire \argmin
in termini di \min
e \arg
comandi.
\newcommand{\argmin}{\arg\!\min}
In questo modo, 1) \argmin
si comporterà sempre allo stesso modo poiché \min
, 2) non “necessita di amsmath
né si preoccupa dei comandi \operator...
3) sì, la variabile non è centrata (è centrata nella parte min
), ma potrebbe anche essere quello che vuoi (dato che è centrato allo stesso modo di un \min
, anche la “g” in \arg
non abbassa ulteriormente il sottoargomento).
\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}
Commenti
- Questo ‘ non sembra una buona idea.
\argmin_{x\in X\cap Y} f(x)
lo interromperà completamente. - A cosa serve il comando
\arg
? - @ThomasAhle,
arg
è per la funzione argomento (angolo nel piano complesso, $ z = | z | e ^ {i \ arg z} $. Tohecz ha ragione tra laltro. - @ boycott.se-yo ‘, ottima osservazione.
Risposta
oppure puoi utilizzare il comando underset. Ad esempio:
R = \underset{n} {\mathrm{argmax}} ~P(L_n|\mathbf{x})
Commenti
- Per favore, non ‘ usarlo. Ciò rende
argmin
unmathord
piuttosto che unmathop
e la spaziatura non è corretta. Inoltre, ciò non regolerà automaticamente i limiti in modalità matematica inline.
Risposta
Vorrei utilizzare \mathop
e \mathrm
ed eventualmente \limits
o \nolimits
, a seconda del comportamento desiderato se combinato con _
e ^
. Vedi sotto.
\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}
Risposta
Funziona senza alcun pacchetto aggiuntivo. Tuttavia creerà una nuova riga.
$$\pi(s) = arg\max_\theta$$
Commenti
-
$$...$$
non è raccomandato da usare con LaTeX. È meglio utilizzare\[ ... \]
per la corretta spaziatura verticale. - Questa soluzione non comporrà argmax correttamente. Qui arg sarà in corsivo (e con una spaziatura errata) e max sarà verticale.
\DeclareMathOperator
è la strada da percorrere in questo caso.\text{arg}\,\max\limits_{\theta}\,