我正在用西班牙语写一篇数学文章,想更改“\mod”命令的定义。然而,这似乎是不可能的,如以下 MWE 所示:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\renewcommand{\mod}{\operatorname{changed}}
\begin{document}
$a \equiv b \mod c$
\end{document}
这将产生以下输出:
但是,如果我评论这一行
\usepackage[spanish]{babel}
在上面的代码中,我得到的结果是
正如我所料。
同样的现象也发生在其他带有西班牙语重音的数学运算符上,例如“\max”或“\lim”,但它适用于没有重音的运算符,如“\sin”。
答案1
我猜你的目的是使用标准无重音操作符名称。
这个技巧在手册中有解释babel-spanish
,第 5.5 节。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath}
% no accents in math operators
\unaccentedoperators
\begin{document}
$a \equiv b \mod{c}$
$\lim_{x\to c}f(x)$
$\arcsin t$
$\max A-\min A$
\end{document}
请注意,\mod
没有定义,\operatorname
并且您提议的重新定义无论如何都是不好的。
无论如何,正确的做法如下:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath}
%\unaccentedoperators
\makeatletter
\addto\mathspanish{\renewcommand{\mod}{\operatorname{m\es@op@ac od}}}
\makeatother
\begin{document}
$a \equiv b \mod c$
\end{document}
如果您不想无论\accentedoperators
或 都使用重音\unaccentedoperators
,请删除该\es@op@ac
命令。
一般情况下,我不建议重新定义一些标准命令来执行不同的操作(除了打印不同的符号)。最好定义\omod
或任何你喜欢的名字。