stringstrings 包重新定义数学符号

stringstrings 包重新定义数学符号

我正在加载stringstrings包中的双竖线\|(在数学模式下)打印为 |0(单竖线后跟零)。我检查了文件stringstrings.sty,确实注意到以下几行

\def\PipeCode{0}
\def\EncodedPipe{\EscapeChar\PipeCode}
\def\Pipe{|}
\let\|\EncodedPipe

下面是两个展示该问题的最小工作示例。

\documentclass{article}
\begin{document}
Without {\tt stringstrings}: $\|$ \(\|\)
\end{document}

在此处输入图片描述

\documentclass{article}
\usepackage{stringstrings}
\begin{document}
With {\tt stringstrings}: $\|$ \(\|\)
\end{document}

在此处输入图片描述

我猜想stringstrings这是由于一些字符串操作问题造成的,但是有没有办法恢复原始符号,与包的用途兼容?此外,还有其他我应该注意的重新定义吗?

编辑:\|我通过在序言中自己重新定义命令来解决这个问题:

\let\doublebar\|
\usepackage{stringstrings}
\def\|\doublebar

但我担心它可能与包装发生冲突。此外,手册第 16 页列出了(一些?)重新定义,但我不明白应该如何解决这个问题。

答案1

\|您可以在加载包之前“保存” 的定义stringstrings,例如,\let\pipe\|。加载后,stringstrings您现在可以使用\pipe而不是\|

以下是完整的 MWE:

\documentclass{article}
\let\pipe\|
\usepackage{stringstrings}
\begin{document}
With {\tt stringstrings}: $\|$ \(\|\) $\pipe$
\end{document}

生成结果:

在此处输入图片描述

加载后,stringstrings您可以输入\let\|\pipe,但这可能会破坏由 定义的某些内容,stringstrings因此我建议改用\pipe。当然\pipe,您可以随意调用它 - 尽管我建议避免使用现有的 LaTeX 命令名称。例如,\let\cow\|同样有效。

相关内容