引号后的标点符号间距

引号后的标点符号间距

一些英国风格指南建议标点符号应放在引号后面,除非标点符号是被引用内容的一部分。因此,你应该这样写

她说“你好”,然后挥手。

但是,如果我用 LaTeX 排版,看起来会很糟糕,因为引号和逗号之间的空格太多:

\documentclass{article}
\begin{document}
She said ``hello'', then waved.
\end{document}

在此处输入图片描述

也许是因为 Donald Knuth 是美国人,因为我的理解是,美国风格指南总是建议将标点符号放在引号内。

我想知道是否有任何软件包可以解决这个问题,改善以这种风格书写的标点符号的间距,而不需要每次手动插入负空格。

答案1

如果你使用 LuaTeX,那么你可以使用 单独添加字距调整对\directlua。例如在 OpTeX 中:

\fontfam[lm]
\directlua
  {fonts.handlers.otf.addfeature
    {
    name = "kern-qq-comma",   % name of a new font feature
    type = "kern",
    data = {
    ["”"] = { [","] = -150},  % kern between ” and comma reduced
    }
  }
}
\setff{kern-qq-comma}\rm

She said ``hello'', then waved.

\bye

答案2

由于逗号被理解为简单文本,因此我认为任何重新定义间距的方法都可能有点冒险且成本高昂。不过,使用宏,我们可以轻松做到这一点。

\documentclass{article}
\usepackage[style=british]{csquotes}
\NewDocumentCommand{ \qnc }{ m }{%
  % Stands for `q'uotes a`n'd `c'omma.
  \enquote*{#1}\kern-1.5pt,%
}

\begin{document}
\begin{description}
\item She said, \enquote*{hello}, then waved.
\item She said, \qnc{hello} then waved.
\end{description}
\end{document}

输出:

1

请注意,我已经使用了包csquotes它的语法更高效,风格也更灵活。它减少了手动出错的几率。如果您更喜欢手动方法,可以选择以下代码。它与上面给出的代码相同,只是没有csquotes

\documentclass{article}
\NewDocumentCommand{ \qnc }{ m }{%
  % Stands for `q'uotes a`n'd `c'omma.
  ``{#1}''\kern-1.5pt,%
}

\begin{document}
\begin{description}
\item She said, ``hello'', then waved.
\item She said, \qnc{hello} then waved.
\end{description}
\end{document}

相关内容