\emph 和标点符号

\emph 和标点符号

我知道\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}

enter image description here

相关内容