我知道\emph
是用来强调文本的。但是偶尔,标点符号会跟在强调的文本后面,主要是逗号和句号。当\emph
使文本变为斜体时,它应该延伸到标点符号,但其他强调(如下划线、颜色、背景等)则不应该。
我是否可以在序言中定义一个解决方案,\emph
以使其扩展到文本后面的标点符号?
即我想要
This is a \emph{small}, simple example.
被渲染为
这是一个小的,简单的例子。
而不是成为
这是一个小的,简单的例子。
答案1
\documentclass{article}
\usepackage{xspace}
\let\Emph\emph
\makeatletter
\def\emph#1{%
\@ifnextchar,{\@emph@i#1}{%
\@ifnextchar;{\@emph@ii#1}{%
\@ifnextchar.{\@emph@iii#1}{%
\@ifnextchar!{\@emph@iv#1}{\Emph{#1}\xspace}}}}}
\def\@emph@i#1,{\Emph{#1,}\xspace}
\def\@emph@ii#1;{\Emph{#1;}\xspace}
\def\@emph@iii#1.{\Emph{#1.}\xspace}
\def\@emph@iv#1!{\Emph{#1!}\xspace}
\makeatother
\begin{document}
This is a \emph{small}, simple example.\par
This is a \emph{small,} simple example.\par
This is a \emph{small}; simple example.\par
This is a \emph{small;} simple example.\par
This is a \emph{small}. simple example.\par
This is a \emph{small.} simple example.\par
This is a \emph{small}! simple example.\par
This is a \emph{small!} simple example.
\end{document}