在环境中改变 `\emph'` 的行为

在环境中改变 `\emph'` 的行为

我想将定义内的命令的行为改为\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}

及其结果:

在此处输入图片描述

相关内容