我想将定义内的命令的行为改为\emph{}
粗体而不是斜体。
这个问题有一个很好的解决方案(至少看起来是这样)。但
对我来说,它不起作用。
原因是答案指的是命令
\renewcommand\eminnershape{\itshape\bfseries}
触发错误:! LaTeX Error: \eminnershape undefined.
现在,有一件事引起了我的注意:在答案中,上面的命令行前面写着“在现代 LaTeX 系统上您可以使用”。
所以也许我的 LaTeX 发行版不够现代
(我相信这是 TeX Live 2010,因为它写在控制台的开头;顺便说一句,我使用的是 TeXShop 2.46)。
问题:假设这是我的过时分布的问题,那么有合理的解决方案吗?
这是一个最小的(?)运行示例
\documentclass{book}
\usepackage{amsmath,amsthm}
\newtheorem{theorem}{\textsc{Theorem}}
%\renewcommand\eminnershape{\bfseries}
\begin{document}
Here's my \emph{message} to the world:
\begin{theorem}
This is \emph{my} theorem.
\end{theorem}
\end{document}
答案1
根据 Daleif 的建议,我添加了包fixltx2e
并消除了之前的错误,一切似乎都正常了。
但是,当我添加definition
环境时,我注意到\emph{}
在这个环境中仍然使用斜体(在theorem
环境中使用粗体)。
所以我继续使用该包etoolbox
并将命令行替换
\renewcommand\eminnershape{\bfseries}
为,
\AtBeginEnvironment{definition}{\renewcommand\eminnershape{\bfseries}}
但这也不起作用(尽管它在该theorem
环境中也能正常工作)。最后,注意到在这最后一条命令行中我们在环境中definition
,我认为我们不需要它,eminnershape
因为它适用于em
在那里发生的所有实例。
我大胆猜测,eminnershape
用它替换它em
,它就起作用了。
现在我对这种方法不是很有信心,因为我担心它不太可靠(尽管它有效,而且不仅仅是这个最小的例子)。所以如果有人读过这篇文章并且比我更了解,请告诉我可能出现的问题。
这是一个完整的工作示例:
\documentclass{book}
\usepackage{amsmath,amsthm,fixltx2e,etoolbox}
\newtheorem{theorem}{Theorem}
\theoremstyle{definition}
\newtheorem{definition}[theorem]{Definition}
\AtBeginEnvironment{definition}{\renewcommand\em{\bfseries}}
\begin{document}
Here's my \emph{message} to the world:
\begin{definition}
This is \emph{my} definition.
\end{definition}
\begin{theorem}
And this is \emph{my} theorem.
\end{theorem}
\end{document}
及其结果: