为其他活跃角色提供逐字命令的最佳方法是什么?

为其他活跃角色提供逐字命令的最佳方法是什么?

我注意到该\verb命令对其他活动字符反应不佳。例如

\documentclass{minimal}
\begin{document}

\catcode`\/=\active

    \verb§/§

\end{document}

将失败。

有没有办法让\verb玩家知道另一个角色已经激活?如果没有,有什么好的解决方法或解决方案吗?


§感谢您对使用作为分隔符的意见\verb。已记录。

我使用的原因§是由于与的相似性;我喜欢对内联逐字序列(尤其是代码)$使用简写命令。\def§{\verb§}

答案1

我不确定§这里是否真的支持使用,但忽略这一点,安全字符列表是\dospecials

\documentclass{minimal}
\expandafter\def\expandafter\dospecials\expandafter{\dospecials\do\/}
\begin{document}

\catcode`\/=\active

    \verb§/§

\end{document}

答案2

LaTeX 中有两个列表用于记录逐字内容:

  • \verb和环境verbatim使用通用列表\dospecials。每个元素都是一对,\do后跟一个字符命令。

  • \index\glossary使用\@sanitize。每个元素都是一对, \@makeother后跟一个字符的命令。

/以下内容为两个命令添加了对新活动的支持:

\makeatletter
\g@addto@macro\dospecials{\do\/}
\g@addto@macro\@sanitize{\@makeother\/}
\makeatother

顺便提一句:\verb§/§

§对于输入编码来说,有点危险。字符在编码 UTF-8 时需要两个字节。然后它只能在 LuaTeX/XeTeX 中工作,而 TeX/pdfTeX 将看到两个字节,第一个字节用作分隔符。输出字体编码OT1和没有 时都看不到这个问题inputenc,因为由于 7 位字体,8 位字节未设置。\tracinglostchars=2这可以看作是警告:

Missing character: There is no � in font cmtt10!
Missing character: There is no � in font cmr10!

第一个是§逐字文本内部第一个的第二个字节,第二个是§外部结束符的第二个字节,因为第一个字节被用作分隔符。

如果\usepackage[utf8]{inputenc}正在使用,则被打乱的第二个字节将导致错误:

! Package inputenc Error: Keyboard character used is undefined
(inputenc)                in inputencoding `utf8'.

答案3

如果你使用,fancyvrb你会有一个很好的界面:

\documentclass{article}
\usepackage{fancyvrb}

\catcode`\/=\active
\def/{SLASH} % just for the example

\fvset{defineactive=\edef/{\string/}}

\begin{document}
ab/cd \Verb|ab/cd|
\end{document}

在此处输入图片描述

\Verb当然,您可以用其他含义定义活动中的斜线(或逐字环境)。

相关内容