有用于列表的 shortvrb 版本吗?

有用于列表的 shortvrb 版本吗?

所以,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}

相关内容