更新:
除了我之前的帖子外,这里还有一张截图,可以为您提供更好的视觉示例。此截图仅HTML
用于CSS
演示。
在 中CSS
,该code
部件是使用font-family: monospace, sans-serif;
、background: #EFF0F1;
、display: inline-block;
和制成的padding: 2px 5px;
。
我想知道是否有简单的模仿这种风格的方式LaTeX
(\lstinline
或更好的选择)没有 \Colorbox
(如果可能的话)。 的所有实例\lstinline
都将具有相同的样式。
我的意思是简单的我觉得我可以在\lstset{}
序言中只写一次——这很简单——而不是输入\Colorbox
每个实例\lstinline
——这对我这样的新手来说又长又麻烦。否则,使用\Colorbox
就好了。
原始问题:
我需要使用或创建inline codes
灰色背景。我读过\verb
\lstinline
这里哪个使用\Colorbox
哪个效果都很好!
我的问题:我们是否可以仅使用 来实现相同的效果\lstinline
,而不使用 ,\Colorbox
这样会更简单吗?
\documentclass{article}
\usepackage{xcolor}
\usepackage{listings}
\definecolor{mygray}{rgb}{0.8,0.8,0.8}
\lstset{%
basicstyle=\ttfamily,
breaklines = true,
backgroundcolor=\color{mygray},
}
\usepackage{realboxes}
\begin{document}
% demo using \lstinline only
This is \lstinline|my code|
% demo using \lstinline and \Colorbox
This is \Colorbox{mygray}{\lstinline|my code|}
\end{document}
答案1
您可以修补\lstinline
使用\Colorbox
;当然,您失去了断线的可能性\lstinline
。
\documentclass{article}
\usepackage{xpatch}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{realboxes}
\definecolor{mygray}{rgb}{0.8,0.8,0.8}
\lstset{
basicstyle=\ttfamily,
backgroundcolor=\color{mygray},
}
\makeatletter
\xpretocmd\lstinline{\Colorbox{mygray}\bgroup\appto\lst@DeInit{\egroup}}{}{}
\makeatother
\begin{document}
\lstinline[language=TeX]|\my code|
\begin{lstlisting}[language=TeX]
\my code
\end{lstlisting}
\end{document}
答案2
(我在原帖表示他/她主要感兴趣的是让所有\lstinline
有色人种的情况自动地,即无需将实例装入显式的\Colorbox{<color-of-choice>}{\lstinline...}
“包装器”中。)
据我所知,该listings
软件包目前不提供\lstinline...
在彩色背景下渲染所有实例的选项或设置。如果您愿意并且能够使用 LuaLaTeX(谁知道呢,也许您已经在这样做了),那么设置一个充当预处理器的 Lua 函数很简单,即在处理的早期阶段扫描所有输入行并自动将 、 和 的所有实例封装\lstinline|...|
在\verb|...|
包装\Verb|...|
器中\Colorbox{mygray}{...}
。
在下面的示例代码中,假设\lstinline
、\verb
和的“参数”\Verb
是总是用 (“管道”) 符号分隔|
。要暂停 Lua 函数的操作,请使用不同的分隔符或执行宏\ColorLstinlineOff
。
% !TeX program = lualatex
\documentclass{article}
\usepackage{xcolor,listings,realboxes,fancyvrb} % fancyvrb for '\Verb' macro
\definecolor{mygray}{rgb}{0.8,0.8,0.8}
\lstset{basicstyle=\ttfamily, breaklines = true, backgroundcolor=\color{mygray}}
\usepackage[doublespacing]{setspace} % just for this example
\usepackage{luacode} % for 'luacode' environment
\begin{luacode}
-- the following code employs Lua's powerful "string.gsub" function
function color_lstinline ( s )
s = string.gsub ( s , "\\lstinline%b||", "\\Colorbox{mygray}{%0}" )
s = string.gsub ( s , "\\[vV]erb%b||", "\\Colorbox{mygray}{%0}" )
return s
end
\end{luacode}
%% Define 2 LaTeX macros to switch operation of Lua function on and off
\newcommand{\ColorLstinlineOn}{\directlua{
luatexbase.add_to_callback ( "process_input_buffer" ,
color_lstinline, "color_lstinline" )}}
\newcommand{\ColorLstinlineOff}{\directlua{
luatexbase.remove_from_callback ( "process_input_buffer" ,
"color_lstinline" )}}
\AtBeginDocument{\ColorLstinlineOn} % Default: activate the Lua function
\begin{document}
\obeylines % just for this example
This is my \lstinline|amazing| code.
This is my \verb|@#$%^&*()\%| code.
This is my \Verb!amazing! code.
This is my \Colorbox{mygray}{\lstinline!amazing!} code.
\end{document}
答案3
下面定义了一个新的宏\clist
(需要包xparse
),它可以自动接近颜色盒。
\documentclass{article}
\usepackage{xcolor,xparse}
\usepackage{listings}
\definecolor{mygray}{rgb}{0.8,0.8,0.8}
\lstset{%
basicstyle=\ttfamily,
breaklines = true,
backgroundcolor=\color{mygray},
}
\usepackage{realboxes}
\DeclareDocumentCommand{\clist}{v}{%
\Colorbox{mygray}{\csname lstinline\endcsname!#1!}%
}
\begin{document}
% demo using \lstinline only
This is \lstinline|my code|
% demo using \lstinline and \Colorbox
This is \Colorbox{mygray}{\lstinline|my code|}
\clist{my code}
\end{document}
答案4
一个简单的解决方案就是在需要时为灰色背景创建一个别名
\newcommand{\code}[1]{\colorbox{mygray}{\lstinline|#1|}}