定义用于插入带有特殊字符的单词的宏

定义用于插入带有特殊字符的单词的宏

因此,我正在处理一个包含多个带有特殊字符(重音符号、变音符号等)的单词的文档。我可以轻松地使用特殊字符命令输入这些单词,但我希望为经常使用的常用单词创建宏,因为 a) 并非所有处理该文档的人都精通 Latex,并且 b) 提高​​基本代码的可读性。例如,这是我尝试创建的宏之一:

\newcommand{\Rhun}{
    \begingroup
        \unskip{Rh\^{u}n}
    \endgroup
    }

这样有人可以输入 \Rhun 并且它会输出 Rhûn。

我无法解决的问题是让它与标点符号一起工作。如果逗号或句号在 \Rhun 之后(如 \Rhun,),那么它会正确插入,但单词和逗号之间有一个空格。我尝试在末尾添加另一个 \unskip,但虽然它解决了逗号问题,但它破坏了正常使用(Rhûn 和下一个单词之间没有空格)。我也尝试过只为逗号制作一个单独的宏,但它违背了这样做的第二个原因,因为我无法在宏中包含逗号(\Rhun, 无法定义,并且 \RhunComma 并不比仅执行特殊字符插入好多少)。

有任何想法吗?

答案1

注意在命令定义中引入的空格。

\newcommand{\Rhun}{ % <<< spurious space
    \begingroup
        \unskip{Rh\^{u}n} % <<< spurious space
    \endgroup
    }

如果你不想依赖 utf8 字符(现在是 TeX 安装中的默认字符,允许你直接输入重音字符),你可以将命令定义为

\usepackage{xspace}
\newcommand\Rhun{Rh\^{u}n\xspace}
% or \newcommand\Rhun{Rhûn\xspace}

仅当后面跟着字母时,该\xspace命令才会生成空格。

在此处输入图片描述

\documentclass{article}
\usepackage{xspace}
\newcommand\Rhun{Rh\^{u}n\xspace}
\begin{document}
\Rhun and the word `and' are separated by a space, whereas \Rhun, when
followed by a comma, shows no intervening space.
\end{document}

相关内容