Jak můžete získat argmin nebo argmax v latexu? Nalezl jsem dvě řešení:
\underset{x}{\operatorname{argmax}} \DeclareMathOperator*{\argmin}{arg\,min}
Nějaké další nápady?
[1] http://www.breakthru.altervista.org/?p=27
[2] http://researchonsearch.blogspot.com/2007/05/enter-argmax-argmin-in-latex.html
Komentáře
odpověď
Jak zdůraznil Pieter, správný způsob, jak definovat operátory argmin a argmax v LaTeXu, je:
\usepackage{amsmath} \DeclareMathOperator*{\argmax}{arg\,max} \DeclareMathOperator*{\argmin}{arg\,min}
Ve skutečnosti použití by byl dostatečný, ale je načítán amsmath
interně, což je stejně vhodné pro sazbu matematiky.
*
v \DeclareMathOperator*
umístí podtržený argument pod slovo, nikoli do pravého dolního rohu.
Komentáře
- Pokud používáte
\DeclareMathOperator*{\argmin}{\arg\!\min}
, zbavíte se ošklivého prostoru meziarg
amin
. - @rbp Proč by měl člověk používat
\arg\min
když jednodušeargmin
dělá to samé? - @egreg máš ‚ pravdu. K tomuto jsem dospěl z experimentů s jinými možnostmi a ‚ se neohlédl 🙂
- V ConTeXtu to je:
\definemathcommand [argmin] [limop] {\mfunction{arg\,min}}
- Vysvětlení: Nechal jsem mezeru (\,) mezi arg a min, protože to ‚ odpovídá původnímu plakátu otázka, tak jsem předpokládal, že tam chtějí ten prostor. Osobně bych prostě udělal
\DeclareMathOperator*{\argmin}{argmin}
bez mezery.
Odpovědět
Shrnutí
V pokračování se předpokládá LaTeX.
Předběžné otázky
1. Měla by malá mezera oddělit „arg“ od „min“?
Jedná se o otázku osobních preferencí. Výchozí definice pro \limsup
má malou mezeru, na druhé straně je arcsin obvykle psán bez mezery mezi těmito dvěma komponentami. Konzistence je jako vždy klíčové slovo: použití definice makra to zajistí a také snadnost úpravy sazby v celém dokumentu, pokud je nutný přechod z jedné možnosti na druhou.
2. Měly by limity ve stylu zobrazení klesnout pod operátor?
Také je to diskutabilní a je třeba dodržovat konvence používané v poli, pro které je dokument napsán.
3. Mělo by být jméno operátora vysázeno vzpřímeně?
Určitě jako všechny ostatní názvy operátorů / funkcí, jako jsou sine a cosine.
Dostupné nástroje
1. amsmath
S amsmath
lze v preambuli dělat
\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
Samozřejmě by měl být použit pouze jeden z nich. V dokumentu stačí napsat \argmin
a řádkování kolem operátoru bude správné podle běžných pravidel sazby matematiky.
Zdánlivě different
\newcommand{\argmin}{\operatornamewithlimits{argmin}}
ve skutečnosti tomu tak není, protože je to v podstatě stejné jako \DeclareMathOperator*{\argmin}{argmin}
; navíc používá zastaralý příkaz, který by měl být \operatorname*
.
2. Žádný balíček
Následující definice jsou velmi podobné výše uvedeným definicím ve stejném pořadí
\newcommand{\argmin}{\mathop{\mathrm{arg\,min}} \newcommand{\argmin}{\mathop{\mathrm{argmin}} \newcommand{\argmin}{\mathop{\mathrm{arg\,min}\nolimits} \newcommand{\argmin}{\mathop{\mathrm{argmin}\nolimits}
S \underset
\underset{x}{\mathrm{argmin}}
To bylo zmíněno také v otázce a v jedné odpovědi, ale je to špatné, jak ukáže vizuální srovnání.
3. Rozdíly
Verze „žádný balíček“ je mnohem přísnější než verze amsmath
, protože tento balíček může přijímat nonamelimits
, která automaticky změní všechny operátory, jako jsou \lim
, \max
, které obvykle mají pod sebou limity (v displeje), abyste je měli na boku. Stejná možnost by samozřejmě působila také na nově definované operátory, pokud by bylo použito \DeclareMathOperator*
.
Testovací dokument
V následujícím testu dokumentu, budou navržené definice nebo konstrukce porovnány.
\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}
Výsledky
Jak bylo předpovězeno, mnoho řádků nastavuje stejné. Makra definovaná pomocí \mathop
se však nebudou řídit volbou nonamelimits
. Také výsledek \argminD
je zjevně špatný, protože limit je vysázen pod „max“ a ne pod celým jménem operátora.
Konstrukce s \underset
je špatná, protože nebude používat správné mezery za operátorem: mezera následuje za všemi ostatními a je to správný způsob sazby . Porovnejte \sin x
a \mathrm{sin}x
a podívejte se na tento úzký prostor v jiném kontextu.
Všimněte si, že \argminC
a \argminA
dávají stejný výsledek, stejně jako \argminD
a \argminB
. Vysvětlení: \arg
a \max
jsou již definovány jako operátory, takže TeX vloží mezeru, pokud jeden přímo následuje další. Použitím \argminC
nebo \argminD
se TeX jen trochu roztočí, bez jakékoli výhody oproti \argminA
nebo \argminB
.
Komentáře
- Toto by měla být přijatá odpověď.
- Není ‚ t
\newcommand{\argmin}{\operatornamewithlimits{argmin}}
odlišný v tom, že ‚ nepoužíváamsmath
balíček? - @HomeroEsmeraldo
\operatornamewithlimits
je zastaralý příkaz definovanýamsopn
(balíček načtenýamsmath
, zřídka používaný sám o sobě). - Děkuji. Z nějakého důvodu pouze
\underset
poskytl uspokojivé výsledky pro s (s tím, že x je pod argminem, nesousedí s ním). - co takhle, jak to v Jupyteru ?
Odpověď
Používám \newcommand{\argmin}{\operatornamewithlimits{argmin}}
.
Komentáře
- +1 Líbí se mi to – proč to příliš komplikovat? Vypadá to úplně stejně jako
\DeclareMathOperator*
odpověď. - Tím se získá “ argmin „. Chcete-li získat “ arg min “ (pravděpodobně nejběžnější notaci), nastavte ji na
{arg\,min}
. - Google mi dal 669 000 odpovědí na “ arg min “ a 520 000 odpovědí na “ argmin „, takže to mohu ‚ nazvat kravatou. 😉
- toto funguje …? chybí nějaké prohlášení o importu?
- Google Scholar mi dal 171 000 za “ arg min “ a 116 000 za “ argmin „.
odpověď
Použijte \usepackage{amsmath}
a poté:
\operatorname*{argmin}_\theta f(x)
Nebo podobně (pro přidání mezery),
\operatorname*{arg\,max}_\theta f(x)
Komentáře
- stručné a věcné!
odpověď
Jinou další alternativou (v jistém smyslu horší řešení kolem, viz komentář níže), může být definice \argmin
z hlediska \min
a \arg
příkazy.
\newcommand{\argmin}{\arg\!\min}
Tímto způsobem se 1) \argmin
bude chovat vždy stejným způsobem jako \min
, 2) nepotřebuje amsmath
nebo se \operator...
starat o příkazy 3) ano, proměnná není vycentrována (je vycentrována v části min
), ale to může být dokonce to, co chcete (protože je vycentrováno stejným způsobem \min
, také „g“ v \arg
již pod-argument nesnižuje).
\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}
Komentáře
- To nevypadá ‚ jako dobrý nápad.
\argmin_{x\in X\cap Y} f(x)
to úplně rozbije. - K čemu je vlastně příkaz
\arg
? - @ThomasAhle,
arg
je pro funkci argumentu (úhel v komplexní rovině, $ z = | z | e ^ {i \ arg z} $. Tohecz má pravdu. - @ boycott.se-yo ‚, dobrá poznámka.
Odpověď
nebo můžete použít příkaz podmnožiny. Například:
R = \underset{n} {\mathrm{argmax}} ~P(L_n|\mathbf{x})
Komentáře
- Prosím, nepoužívejte to ‚. Toto dělá
argmin
amathord
spíše nežmathop
a řádkování je nesprávné. Navíc to automaticky neupraví limity v režimu vložené matematiky.
Odpověď
Použil bych \mathop
a \mathrm
a případně \limits
nebo \nolimits
v závislosti na požadovaném chování v kombinaci s _
a ^
. Viz níže.
\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}
Odpověď
Funguje to bez dalšího balíčku. Vytvoří však nový řádek.
$$\pi(s) = arg\max_\theta$$
Komentáře
-
$$...$$
se nedoporučuje používat s LaTeXem. Lepší použití\[ ... \]
pro správné svislé mezery. - Toto řešení nebude správně nastavovat argmax. Zde bude arg v kurzivě (a se špatnými mezerami) a max bude ve svislé poloze.
\DeclareMathOperator
je cesta v tomto případě.\text{arg}\,\max\limits_{\theta}\,