这里有一个MWE
。
\documentclass[a4,12pt]{report}
\usepackage{amssymb}
\usepackage{amsmath}
\renewcommand{\.}[1]{\ensuremath{\mathrm{#1}}}
\newcommand{\+}[1]{\ensuremath{\mathbf{#1}}}
\newcommand{\ud}{\mathop{}\!\mathrm{d}}
%\usepackage{hyperref}
\begin{document}
Let $\.f(x) = (x+2a)^3 -27 a^2 x$, where $a\ge 0$.
By sketching $\.f(x)$, show that $\.f(x)\ge 0$ for~$x \ge0$.
\end{document}
我想我已经找到问题所在了。但不确定为什么会发生这种情况。
一切都是美好的没有\usepackage{hyperref}
。但是当我加载包时,它无法编译latex myfile.tex
。错误消息说
请在数学模式下使用 \mathaccent 表示重音。\add@accent ...@spacefactor \spacefactor }\accent #1 #2\egroup \spacefactor ...
我正在用来latex -> dvips -> ps2pdf
编译。
答案1
\newcommand
如果覆盖现有命令,latex 会产生错误,其原因是为了减少这种错误发生的可能性。\.
是 latex 的核心命令,不应该重新定义(除非你重新定义 latex 的所有文本处理,例如针对 unicode tex 变体而不是经典 tex 等。)重新定义它会破坏文档,即使它们没有\.
明确规定:
\documentclass{article}
\begin{document}
\emph{Ġood}
\renewcommand{\.}[1]{\ensuremath{\mathrm{#1}}}
\emph{Less Ġood}
\end{document}
不产生错误但产生
但是如果您真的必须这样做,而简单地将命令更改为任何其他名称是不可能的,那么只需在乳胶文本处理\renewcommand\.
之后移动该行\usepackage{hyperref}
,然后仍然中断,但 hyperref 对重音命令的检查也会被覆盖,因此添加 hyperref 不会使事情变得更糟。
\documentclass[a4paper,12pt]{report}
\usepackage{amssymb}
\usepackage{amsmath}
\newcommand{\+}[1]{\ensuremath{\mathbf{#1}}}
\newcommand{\ud}{\mathop{}\!\mathrm{d}}
\usepackage{hyperref}
\renewcommand{\.}[1]{\ensuremath{\mathrm{#1}}}% not recommended, use a different name!
\begin{document}
Let $\.f(x) = (x+2a)^3 -27 a^2 x$, where $a\ge 0$.
By sketching $\.f(x)$, show that $\.f(x)\ge 0$ for~$x \ge0$.
\end{document}