改变西班牙语中“\mod”的定义是不可能的?

改变西班牙语中“\mod”的定义是不可能的?

我正在用西班牙语写一篇数学文章,想更改“\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或任何你喜欢的名字。

相关内容