我使用soul
's\texthl
和 组合来\texttt
呈现内联代码,当到达行尾时,该代码可以在任意连字符点处中断。为了模拟内联代码的“逐字”方面,我基本上转义了\${}_&%#~^
逐字文本中可能出现的任何特殊字符 ( )。
以下是我所取得成果的一个例子:
\documentclass{article}
\usepackage[margin=2cm]{geometry}
\usepackage{xcolor}
\usepackage{fontspec}
\usepackage{soul}
\definecolor{bg}{rgb}{0.85, 0.85, 0.85}
\setmonofont{Courier New}
\sethlcolor{bg}
\begin{document}
aklsdklasj asdkj alskjd aslkj dalskjd asldjd asad ldasd sd pjwed e jope pojep
ojepoj ejpm pwj slakdj as \texthl{\texttt{\textbackslash \-\-n\-e\-w\-c\-o\-m\-m\-a\-n\-d\-\{\-t\-e\-s\-t\-\}\-\{\-o\-u\-t\-\}}}
\end{document}
使用以下命令进行编译latexmk -lualatex test.tex
:
不幸的是,如果我尝试渲染,x = 3
突出显示就不再起作用:
\documentclass{article}
\usepackage[margin=2cm]{geometry}
\usepackage{xcolor}
\usepackage{fontspec}
\usepackage{soul}
\definecolor{bg}{rgb}{0.85, 0.85, 0.85}
\setmonofont{Courier New}
\sethlcolor{bg}
\begin{document}
aklsdklasj asdkj alskjd aslkj dalskjd asldjd asad ldasd sd pjwed e jope pojep
ojepoj ejpm pwj slakdj as \texthl{\texttt{\textbackslash \-\-n\-e\-w\-c\-o\-m\-m\-a\-n\-d\-\{\-t\-e\-s\-t\-\}\-\{\-o\-u\-t\-\}}}
\texthl{\texttt{x\- \-=\- \-3}}
\end{document}
有人知道为什么吗?
答案1
遵循并扩展@UlrikeFischer的建议,您可能希望开始使用包lua-ul
而不是soul
。我还想建议您加载xurl
包并将较长的字符串放在\path
包装器中,以允许在任意位置换行。这样,您可以编写
\highLight{\path|\newcommand{\test}{out}|}
代替
\texthl{\texttt{\textbackslash \-\-n\-e\-w\-c\-o\-m\-m\-a\-n\-d\-\{\-\textbackslash\-t\-e\-s\-t\-\}\-\{\-o\-u\-t\-\}}}
\documentclass{article}
\usepackage{fontspec}
\setmonofont{Courier New}
\usepackage{luacolor} % repalcement for 'xcolor'
\definecolor{bg}{rgb}{0.85, 0.85, 0.85}
\usepackage{lua-ul} % replacement for 'soul' package
\LuaULSetHighLightColor{bg}
\usepackage{xurl} % for \path macro, allow line breaks at arbitrary locations
\begin{document}
aklsdklasj asdkj alskjd aslkj dalskjd asldjd asadcd
pwj slakdj as \highLight{\path|\newcommand{\test}{out}|}
\smallskip
\highLight{\path+x=3+}
\end{document}