所以,shortvrb
是一个简洁的小包,它允许您执行\MakeShortVerb{\|}
的|foo|
操作类似于\verb|foo|
。
现在,我喜欢listings
。有没有\MakeShortListings
可以|bar|
像 一样行动的\lstinline|bar|
?
答案1
\documentclass{article}
\usepackage{listings}
\lstMakeShortInline[basicstyle=\small\ttfamily]{|}
\begin{document}
foo |bar| baz
\lstDeleteShortInline{|}
foo |bar| baz
\end{document}
答案2
您可以将相关字符定义为活动字符,并将其定义为代表该字符的\lstinline[<options>]<char>
位置。<char>
\documentclass{article}
\usepackage{listings}
\catcode`|=\active
\def|{\lstinline[language=C]|}
\begin{document}
|\relax|
|int main();|
\end{document}
基于此的A\MakeShortListings
可以定义如下:
\documentclass{article}
\usepackage{listings}
\newcommand*\MakeShortListings[2][]{%
\catcode`#2=\active
\begingroup
\def\@tempa{\lstinline[#1]}%
\lccode`~=`#2%
\lowercase{\expandafter\endgroup\expandafter\def\expandafter~\expandafter{\@tempa~}}%
}
\MakeShortListings{\|}
\begin{document}
|\relax|
\MakeShortListings[language=C]{\|}
|int main();|
\end{document}
如果您还想再次删除此字符的特殊含义,例如\DeleteShortVerb
允许它\MakeShortVerb
,您可以使用它们来保存和恢复其 catcode 和定义。这已经使角色处于活动状态。
\documentclass{article}
\usepackage{listings}
\usepackage{shortvrb}
\newcommand*\MakeShortListings[2][]{%
\MakeShortVerb{#2}%
\begingroup
\def\@tempa{\lstinline[#1]}%
\lccode`~=`#2%
\lowercase{\expandafter\endgroup\expandafter\def\expandafter~\expandafter{\@tempa~}}%
}
\MakeShortListings{\"}
\begin{document}
"\relax"
\MakeShortListings[language=C]{\"}
"int main();"
\DeleteShortVerb{\"}
``test"
\end{document}