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 meziargamin. - @rbp Proč by měl člověk používat
\arg\minkdyž jednodušeargmindě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áamsmathbalíček? - @HomeroEsmeraldo
\operatornamewithlimitsje 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
\undersetposkytl 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,
argje 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á
argminamathordspíše nežmathopa řá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.
\DeclareMathOperatorje cesta v tomto případě.\text{arg}\,\max\limits_{\theta}\,