![为其他活跃角色提供逐字命令的最佳方法是什么?](https://linux22.com/image/297109/%E4%B8%BA%E5%85%B6%E4%BB%96%E6%B4%BB%E8%B7%83%E8%A7%92%E8%89%B2%E6%8F%90%E4%BE%9B%E9%80%90%E5%AD%97%E5%91%BD%E4%BB%A4%E7%9A%84%E6%9C%80%E4%BD%B3%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我注意到该\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
当然,您可以用其他含义定义活动中的斜线(或逐字环境)。