我正在尝试重新定义 \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}