我遇到了以下问题。在我的文档中,我定义了一个新命令来保存一些字符
\renewcommand{\r}{r_\mathrm{max}}
此外,由于它是瑞典语,因此它使用了特殊字符 å,该字符实际上是由\aa
LaTeX 提供的。但是,我新定义的命令似乎以某种方式破坏了命令\aa
。我收到消息说 amissing $ was inserted
和然后\aa
似乎以某种方式被 替换了r_max
。
我认为问题在于\r
上面的圆圈已经存在,所以才会出现问题。不幸的是,我的论文已经完成了(瑞典文摘要除外),而且我\r
经常使用,所以我不想到处都改。有办法解决我的问题吗?
这是一个完全不起作用的例子:
\documentclass[11pt]{amsart}
\usepackage{geometry} % See geometry.pdf to learn the layout options. There are lots.
\geometry{letterpaper} % ... or a4paper or a5paper or ...
\usepackage{graphicx}
\usepackage{amssymb}
\usepackage{epstopdf}
\renewcommand{\r}{r_\mathrm{max}}
\usepackage[latin1]{inputenc}
\usepackage[swedish,english]{babel}
\title{Brief Article}
\author{The Author}
\begin{document}
\maketitle
asdasds $\r$ \aa
\end{document}
答案1
我强烈建议不要重新定义诸如这样的基本宏\accents
。这会导致您遇到的麻烦。
如果\aa
和\AA
是唯一使用环形重音符的宏\r
,那么您可以重新定义它们。我们的示例文件使用字体编码OT
。下面的行将用于编码T1
。
\DeclareTextAccent{\ring}{OT1}{23}
% \DeclareTextAccent{\ring}{T1}{6}
\renewcommand*{\aa}{\ring a}
\renewcommand*{\AA}{\ring A}
\r
也可以使用,如果å
直接使用(latin1
包的 选项inputenc
)。假设您不更改编码,则可以修复此问题:
\usepackage[latin1]{inputenc}
\DeclareInputText{197}{\r A}
\DeclareInputText{229}{\r a}
完整示例:
\documentclass[11pt]{amsart}
\usepackage{geometry} % See geometry.pdf to learn the layout op
\geometry{letterpaper} % ... or a4paper or a5paper or ...
\usepackage{graphicx}
\usepackage{amssymb}
\usepackage{epstopdf}
\renewcommand{\r}{r_\mathrm{max}}
\DeclareTextAccent{\ring}{OT1}{23}
\renewcommand*{\aa}{\ring a}
\renewcommand*{\AA}{\ring A}
\usepackage[latin1]{inputenc}
\DeclareInputText{197}{\r A}
\DeclareInputText{229}{\r a}
\usepackage[swedish,english]{babel}
\title{Brief Article}
\author{The Author}
\begin{document}
\maketitle
asdasds $\r$ \aa
\end{document}
答案2
如果你查看 LaTeX 内核latex.ltx
,你会发现其中有以下几行
\def \aa {\r a}
\def \AA {\r A}
如你所见,环形重音符(\r
)用于\aa
和的定义\AA
。
更新 LaTeX 命令不是一个好主意。您可能希望改为定义\myr
。只需使用文本编辑器将其更改\r
为 即可\myr
。
答案3
由于 LaTeX 内核latex.ltx
有以下几行
\def \aa {\r a}
\def \AA {\r A}
你需要做类似的事情
\let\ringaccent\r
\def\aa{\ringaccent a}
\def\aa{\ringaccent a}
在你重新定义之前\r
。
我不同意这种观点,即覆盖普通的 TeX 或 LaTeX 命令通常是一个坏主意。在数学输入中,您可能有充分的理由使用单字母宏,例如\r
或\v
。将它们保留用于很少或从未使用的重音符号会很浪费。将它们保留用于仅两行 LaTeX 内部代码会很荒谬。TeX 旨在为我们提供灵活性;让我们使用它。