我不知道我应该使用\binom
而不是\choose
(我忽略了所有警告)。现在,我不用在所有我使用的地方手动更改它\choose
我认为应该有一种方法可以重新定义 \choose
对吗\binom
?
但是,我不知道如何做,也找不到如何去做。
答案1
假设您总是将 的中缀式参数括\choose
在花括号中,即,如果您写的${n \choose k}$
不仅仅是$n \choose k$
,那么以下基于 LuaLaTeX 的方法可能会让您感兴趣。它定义了一个 Lua 函数并将其分配给 LuaTeX 的process_input_buffer
回调,以扫描输入流中的 实例{...\choose...}
并将它们转换为等效的\binom
表达式前TeX 开始其常规处理。
这种方法确实有一些局限性。特别是,它假设 的两个...
参数\choose
不包含进一步的花括号。希望一个约束较少的约束是 的实例{...\choose...}
不包含换行符。
如果你检查日志文件,你会发现它不包含任何此类警告
Package amsmath Warning: Foreign command \atopwithdelims;
(amsmath) \frac or \genfrac should be used instead
(amsmath) on input line 13.
这是因为当 LaTeX 处理输入时,它从未“看到”任何指令\choose
。
\documentclass{article}
\usepackage{amsmath} % for '\binom' macro
\usepackage{luacode} % for 'luacode' environment
\begin{luacode}
function choose2binom ( s )
-- perform non-greedy pattern match for "1 or more instances of any character"
return ( s:gsub ( "{(..-)\\choose(..-)}" , "\\binom{%1}{%2}" ) )
end
\end{luacode}
\AtBeginDocument{\directlua{luatexbase.add_to_callback (
"process_input_buffer", choose2binom , "choose2binom" ) }}
\begin{document}
${5\choose3}$ ${ 10 \choose 4 }$ $ {n\choosek} $
\end{document}