![在 Verbatim 环境中注入命令时,使用 fancyvrb 和 fvextra 换行不起作用](https://linux22.com/image/462204/%E5%9C%A8%20Verbatim%20%E7%8E%AF%E5%A2%83%E4%B8%AD%E6%B3%A8%E5%85%A5%E5%91%BD%E4%BB%A4%E6%97%B6%EF%BC%8C%E4%BD%BF%E7%94%A8%20fancyvrb%20%E5%92%8C%20fvextra%20%E6%8D%A2%E8%A1%8C%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
使用fancyvrb
和fvextra
,可以让逐字环境在任何位置换行以适应文本宽度。
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{fvextra}
\begin{document}
\DefineVerbatimEnvironment{MyVerbatim}{Verbatim}{breaklines, breakanywhere}
\begin{MyVerbatim}
def f(x):
s = "908df0sdfdsfsd78g89f7g98fd7gh98fdhfd7h98df7h98dfh99h8dfa897hf9d7h98fd7hf98dh"
return x
\end{MyVerbatim}
\end{document}
但是,如果我commandchars
在 verbatim 环境中添加并注入一个命令,那么换行算法fvextra
就会以某种方式被覆盖。
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{fvextra}
\usepackage{xcolor}
\begin{document}
\newcommand{\Tok}[1]{\textcolor[rgb]{0.3, 0.4, 0.2}{#1}}
\DefineVerbatimEnvironment{MyOtherVerbatim}{Verbatim}
{breaklines, breakanywhere, commandchars=\\\{\}}
\begin{MyOtherVerbatim}
def f(x):
s = \Tok{"908df0sdfdsfsd78g89f7g98fd7gh98fdhfd7h98df7h98dfh99h8dfa897hf9d7h98fd7hf98dh"}
return x
\end{MyOtherVerbatim}
\end{document}
为什么会发生这种情况?即使我注入了这样的自定义命令,如何仍能换行?