重新定义命令和特殊字符

重新定义命令和特殊字符

我正在尝试重新定义 \v 命令(楔入字符上方)以执行 \vec 在数学模式下执行的操作,并在名为 \hac 的命令中保留 \v。此代码运行完美

\documentclass{article}
\let\hac\v%
\renewcommand{\v}[1]{\ensuremath{\vec{#1}}}%
\begin{document}
line 1: š č ř

line 2: \hac{s} \hac{c} \hac{r} \v{s} \v{c} \v{r}
\end{document}

(第 1 行不会打印“š č ř”,因为它无法识别字符)。但是,当我添加

 \usepackage[cp1250]{inputenc}%

在序言中,第一行打印了带有 \vec 的“sc r”。我不明白这种行为从何而来,以及如何修复它。(第 2 行始终是正确的,第一个“sc r”带有楔形,第二个带有 \vec)。有人可以解释一下吗?

实现我想要实现的目标的另一种方法是找出 \v 命令的语法。我使用 show2e 包中的 \showcmd 执行了此操作,找到了 ''> \v=macro: ->\OT1-cmd \v \OT1\v .\v '',但不理解语法。

谢谢你,J

答案1

š在 cp1250 编码(和其他编码)中定义为,因此,\v s如果您重新定义,则\v重新定义š。重新定义核心 LaTeX 命令(如)\v不太可能值得付出努力,它会使您的文档片段与其他所有 LaTeX 设置不兼容,除非您重新定义 LaTeX 的所有重音和编码支持以不使用\v

答案2

您可以重新定义\v\vec数学模式,但保留原始\v文本模式。这样您就不会遇到其他人提到的可移植性问题。

您可以按如下方式实现此目的(在序言中执行此操作):

\let\textv\v
\renewcommand\v{\TextOrMath\textv\vec}

相关内容