![有用于列表的 shortvrb 版本吗?](https://linux22.com/image/238758/%E6%9C%89%E7%94%A8%E4%BA%8E%E5%88%97%E8%A1%A8%E7%9A%84%20shortvrb%20%E7%89%88%E6%9C%AC%E5%90%97%EF%BC%9F.png)
所以,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}