我想像gray
StackExchange 那样用背景突出显示代码。我知道我可以设置bgcolor
为minted
在内联代码上放置纯色背景。
但是,这使得minted
usecolorbox
不会像 markdown 那样跨越长行:
这是一个很短的普通句子。
here_is_a_very_long + code_snippet + that_ends_up + wrapped
。框未延伸到右边距。
我的理解是,该soul
包提供了这种类型的突出显示。我天真地尝试使用它,借鉴了https://tex.stackexchange.com/a/276750/41112,就像是:
\documentclass{article}
\usepackage{xpatch}
\usepackage{minted}
\usepackage{xcolor}
\usepackage{soul}
\definecolor{bg}{rgb}{0.95,0.95,0.95}
\setminted{breaklines=true}
\newmintinline[python]{python}{bgcolor=bg}
% this is the bit of code in question
\makeatletter
\xpatchcmd{\minted@inputpyg@inline}{%
\colorbox%
}{%
\long\def\color@b@x##1##2##3%
{\sethlcolor{##2}\hl{##3}}%
\colorbox%
}{\typeout{Success}}{\typeout{Failure}}
\makeatother
\begin{document}
Here is a normal sentence that is short.
\python{here_is_a_very_long + code_snippet + that_ends_up + wrapped}.
The box should not extend into the right margin.
\end{document}
不幸的是,这似乎导致 LaTeX 陷入无限循环;大概是因为底层hl
使用抱怨缺少了什么。colorbox
这种方法看起来可行吗?有没有办法恢复\color@b@x
替换中的旧含义,从而避免这种递归?
不幸的是,这抱怨了一个额外的}
。这种方法看起来可行吗?这里出了什么问题?
答案1
我不认为它可以与 soul 一起工作,但使用 lualatex 和 lua-ul 似乎可以工作(但请注意,代码通常无法很好地跨行中断):
\documentclass{article}
\usepackage{xpatch}
\usepackage{minted}
\usepackage{xcolor}
\definecolor{bg}{rgb}{0.95,0.95,0.95}
\usepackage{iftex}
\usepackage{luacolor}
\usepackage{lua-ul}
\setminted{breaklines=true}
\newmintinline[python]{python}{bgcolor=bg}
% this is the bit of code in question
\makeatletter
\newcommand\myhl[2]{\highLight[#1]{#2}}
\xpatchcmd{\minted@inputpyg@inline}{%
\colorbox%
}{%
\myhl%
}{\typeout{Success}}{\fail}
\makeatother
\begin{document}
Here is a normal sentence that is short.
\python{here_is_a_very_long + code_snippet + that_ends_up + wrapped}.
The box should not extend into the right margin.
\end{document}