如何阻止 `^^` 转换为 `M`?

如何阻止 `^^` 转换为 `M`?

\^^,,\^\^\^ \^给出错误。\verb|^^|有效,但如果放在里面\begin{leftbubbles}\end{leftbubbles}从这个答案如何让气泡中的每一行都像聊天对话一样?它给出了错误

! Missing } inserted.
<inserted text> 
                }

右气泡也是如此。你可能已经猜到了,它们^^是表情符号 ^^

为什么会^^编译为M,以及如何防止这种情况?

答案1

当你输入时^^(在正常类别代码设置下,即^类别代码为 7 时),TeX 会查找下一个字符,假设它具有 ASCII 代码X(小于 128)并用具有 ASCII 码的字符替换整个结构X− 64 或X+ 64,取决于哪一个在 0-127 范围内。

例外:如果以下字符在 之中0123456789abcdef,TeX 将查找另一个字符,如果再次在这些字符之中,它将通过将两个字符解释为十六进制数字来将这四个字符替换为具有指定的 ASCII 码的字符。

因此,^^无法通过键入来获得两个插入符号。也\verb不能作为其他命令的参数,不幸的是,bubblesright环境的内容必须作为宏的参数吸收。

解决方案:为该表情符号定义一个特定的命令。

我建议在之前添加以下内容\ExplSyntaxOff

\NewDocumentCommand{\ei}{m}{ \texttt { \tl_to_str:n { #1 } } }
\NewDocumentCommand{\eihh}{}{ \texttt { \tl_to_str:N ^ \tl_to_str:N ^ } }

然后你可以输入

\begin{rightbubbles}
Here \ei{;-)}

What \eihh

Another \ei{:-D}
\end{rightbubbles}

在此处输入图片描述

另类诡计。

添加,之前\ExplSyntaxOff

\NewDocumentCommand{\ei}{m}{ \texttt { \tl_to_str:n { #1 } } }
\char_set_active_eq:nN { `^ } \c_math_superscript_token
\AtBeginDocument
 {
  \char_set_mathcode:nn { `^ } { "8000 }
  \char_set_catcode_other:n { `^ }
 }

然后输入

\begin{rightbubbles}
Here \ei{;-)}

What \ei{^^}

Another \ei{:-D}
\end{rightbubbles}

将产生与之前相同的输出。

相关内容