Hur kan du få argmin eller argmax i Latex? Två lösningar jag hittade är:
\underset{x}{\operatorname{argmax}} \DeclareMathOperator*{\argmin}{arg\,min}
Några andra idéer?
[1] http://www.breakthru.altervista.org/?p=27
[2] http://researchonsearch.blogspot.com/2007/05/enter-argmax-argmin-in-latex.html
Kommentarer
Svar
Som Pieter påpekade är det rätta sättet att definiera argmin- och argmax-operatorer i LaTeX:
\usepackage{amsmath} \DeclareMathOperator*{\argmax}{arg\,max} \DeclareMathOperator*{\argmin}{arg\,min}
Egentligen använder du amsopn
-paketet skulle vara tillräckligt men det laddas av amsmath
internt, vilket ändå rekommenderas för matematisk typsättning.
*
i \DeclareMathOperator*
placerar det understrukna argumentet under ordet snarare än längst ner till höger om det.
Kommentarer
- Om du använder
\DeclareMathOperator*{\argmin}{\arg\!\min}
blir du av med det fula utrymmet mellanarg
ochmin
. - @rbp Varför ska man använda
\arg\min
när man baraargmin
gör detsamma? - @egreg du ’ har rätt. Jag kom fram till den här från några experiment med andra alternativ och såg ’ inte tillbaka 🙂
- I ConTeXt är det:
\definemathcommand [argmin] [limop] {\mfunction{arg\,min}}
- Förklaring: Jag lämnade det tunna utrymmet (\,) mellan arg och min för att ’ är vad originalaffischen hade i fråga, så jag antog att de ville ha utrymmet där. Personligen skulle jag bara göra
\DeclareMathOperator*{\argmin}{argmin}
utan mellanslag.
Svar
Sammanfattning
I uppföljaren antas LaTeX.
Preliminära frågor
1. Bör ett tunt utrymme skilja ”arg” från ”min”?
Detta är en fråga om personlig preferens. Standarddefinitionen för \limsup
har ett tunt mellanslag, å andra sidan ”arcsin” skrivs vanligtvis utan ett mellanslag mellan de två komponenterna. Konsistens är som alltid nyckelordet: att använda en makrodefinition säkerställer det och också att det är enkelt att ändra typsättningen i hela dokumentet, om det behövs byta från ett alternativ till ett annat.
2. Bör gränser gå under operatören i visningsstil?
Detta är också diskutabelt och konventioner som används i fältet som dokumentet är skrivet för bör följas.
3. Ska operatörens namn sättas upprätt?
Definitivt, som alla andra operatörs- / funktionsnamn som sinus och cosinus.
Tillgängliga verktyg
1. amsmath
Med amsmath
kan man göra i ingressen,
\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
Naturligtvis bör endast en av dessa användas. I dokumentet räcker det med att skriva \argmin
och avståndet runt operatören kommer att vara rätt enligt de vanliga reglerna för matematisk typsättning.
Den till synes annorlunda
\newcommand{\argmin}{\operatornamewithlimits{argmin}}
är inte riktigt så, för det är i huvudsak detsamma som \DeclareMathOperator*{\argmin}{argmin}
; dessutom använder den ett utfasat kommando, som ska vara \operatorname*
.
2. Inget paket
Följande definitioner liknar de ovan, i samma ordning
\newcommand{\argmin}{\mathop{\mathrm{arg\,min}} \newcommand{\argmin}{\mathop{\mathrm{argmin}} \newcommand{\argmin}{\mathop{\mathrm{arg\,min}\nolimits} \newcommand{\argmin}{\mathop{\mathrm{argmin}\nolimits}
Med \underset
\underset{x}{\mathrm{argmin}}
Detta nämndes också i frågan och i ett svar, men det är fel, som den visuella jämförelsen kommer att visa.
3. Skillnader
Versionen ”inget paket” är mycket styvare än amsmath
-versionen, eftersom detta paket kan ta emot nonamelimits
alternativ som automatiskt ändrar alla operatörer som \lim
, \max
som vanligtvis har gränser under (i visar) för att ha dem på sidan. Samma alternativ skulle naturligtvis också agera på nyligen definierade operatörer, förutsatt att \DeclareMathOperator*
har använts.
Testdokument
I följande test dokument, kommer de föreslagna definitionerna eller konstruktionerna att jämföras.
\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}
Resultat
Som förutsagt har många rader samma inställningar. Makron som definieras med \mathop
följer dock inte alternativet nonamelimits
. Resultatet av \argminD
är också uppenbart fel, eftersom gränsen är inställd under ”max” och inte under hela operatörens namn.
Konstruktionen med \underset
är fel eftersom den inte använder rätt avstånd efter operatören: ett tunt utrymme följer alla andra och det är rätt sätt att sätta . Jämför \sin x
och \mathrm{sin}x
för att se detta tunna utrymme i ett annat sammanhang.
Observera att \argminC
och \argminA
ger samma resultat, samt \argminD
och \argminB
. Förklaring: \arg
och \max
är redan definierade som operatorer, så TeX infogar ett tunt utrymme om man följer en annan direkt. Att använda \argminC
eller \argminD
får bara TeX att snurra på hjulen lite mer, utan fördel över \argminA
eller \argminB
.
Kommentarer
- Detta bör vara det accepterade svaret.
- Är ’ t
\newcommand{\argmin}{\operatornamewithlimits{argmin}}
annorlunda genom att det inte ’ t använderamsmath
-paket? - @HomeroEsmeraldo
\operatornamewithlimits
är ett föråldrat kommando definierat avamsopn
(ett paket laddat avamsmath
, sällan används av sig själv). - Tack. Av någon anledning gav endast
\underset
tillfredsställande resultat för med (med x under argmin, inte intill det). - hur är det med hur man får det att fungera i Jupyter ?
Svar
Jag använder \newcommand{\argmin}{\operatornamewithlimits{argmin}}
.
Kommentarer
- +1 Jag gillar det här – varför överkomplicera saker? Detta ser exakt ut som
\DeclareMathOperator*
svaret. - Detta ger ” argmin ”. För att få ” arg min ” (utan tvekan den vanligaste notationen), ställ in den på
{arg\,min}
. - Google gav mig 669 000 svar för ” arg min ” och 520 000 svar för ” argmin ”, så jag ’ kallar det oavgjort. 😉
- detta fungerar …? saknas ett importuttalande?
- Google Scholar fick mig 171.000 för ” arg min ” och 116.000 för ” argmin ”.
Svar
Använd \usepackage{amsmath}
och sedan:
\operatorname*{argmin}_\theta f(x)
Eller på liknande sätt (för att lägga till ett mellanslag),
\operatorname*{arg\,max}_\theta f(x)
Kommentarer
- kortfattad och till punkt!
Svar
Bara ett annat alternativ (på något sätt den sämre lösningen runt, se kommentar nedan) kan vara att definiera \argmin
i termer av \min
och \arg
kommandon.
\newcommand{\argmin}{\arg\!\min}
På detta sätt kommer 1) \argmin
att bete sig alltid på samma sätt eftersom \min
, 2) inte behöver amsmath
eller bryr sig om \operator...
kommandon 3) ja, variabeln är inte centrerad (den är centrerad i min
-delen ), men det kan till och med vara vad du vill (eftersom det är centrerat på samma sätt en \min
, även ”g” i \arg
sänker inte underargumentet ytterligare.
\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}
Kommentarer
- Detta ser inte ’ ut som en bra idé.
\argmin_{x\in X\cap Y} f(x)
kommer att bryta det helt. - Vad är
\arg
-kommandot i alla fall? - @ThomasAhle,
arg
är för argumentfunktionen (vinkel i komplexplanet, $ z = | z | e ^ {i \ arg z} $. Tohecz är rätt förresten. - @ boycott.se-yo ’, bra poäng.
Svar
eller så kan du använda kommandot underset. Till exempel:
R = \underset{n} {\mathrm{argmax}} ~P(L_n|\mathbf{x})
Kommentarer
- Var snäll och använd ’. Detta gör
argmin
tillmathord
snarare än enmathop
och avståndet är felaktigt. Dessutom justerar inte gränserna automatiskt i inmatat läge.
Svar
Jag skulle använda \mathop
och \mathrm
, och så småningom \limits
eller \nolimits
, beroende på önskat beteende i kombination med _
och ^
. Se nedan.
\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}
Svar
Detta fungerar utan ytterligare paket. Men det skapar en ny rad.
$$\pi(s) = arg\max_\theta$$
Kommentarer
-
$$...$$
rekommenderas inte att användas med LaTeX. Använd bättre\[ ... \]
för korrekt vertikalt avstånd. - Den här lösningen kommer inte att sätta argmax korrekt. Här kommer arg att vara kursiv (och med dåligt avstånd), och max kommer att vara upprätt.
\DeclareMathOperator
är vägen att gå i det här fallet.\text{arg}\,\max\limits_{\theta}\,