逐字逐句的新命令

逐字逐句的新命令

我正在尝试编写\newcommand一个verbatim

\newcommand{\codeline}[1]{\begin{verbatim}{#1}\end{verbatim}}

并将其用作

\codeline{int foo;}

但它给出了错误“扫描 \@xverbatim 的使用时文件结束”。如何修复它?

答案1

如果你想要一个简单的实现,那就去吧

\newcommand[1]{{\small\texttt{#1}}}

如果您想要更详细的控制,您应该使用fancyvrbminted包。

答案2

具体答案

对于下面的示例,以下代码来自列表解决方案是:

\newcommand{\codeline}[1]{\lstinline|#1|}

当然,这只有在您使用没有垂直线的短内联代码示例时才是合理的|

例子

此实现有意义的 MWE:

\documentclass[landscape]{article}
\usepackage{listings}
\newcommand{\includegraphicswithtitle}[1]{%
\clearpage%
\section*{\lstinline|#1|}%
\includegraphics{#1}}

\title{All graphics of my thesis}

\begin{document}
\maketitle
\centering
\includegraphicswithtitle{Image08_a_1.pdf}
\includegraphicswithtitle{Image08_b_1.pdf}
\includegraphicswithtitle{Image08_c_1.pdf}
\end{document}

答案3

使用以下内容:

\newcommand{\codeline}[1]{\texttt{\detokenize{#1}}}

这将逐字打印#1。

答案4

\DefineVerbatimToScantokens使用答案中的Ulrich Diez宏https://tex.stackexchange.com/a/629173/250119(注意。转到该答案以了解如何使用该宏,如果您发现答案有用,也许可以投票。不幸的是,据我所知,它目前不在任何包中,因此您必须复制粘贴代码),我们可以执行以下操作:

\documentclass{article}

%=== Code of \DefineVerbatimToScantokens ========================
% ... <copy the code from that answer>
%=== End of code of \DefineVerbatimToScantokens =================

\DefineVerbatimToScantokens\codeline{v}{%
\begin{verbatim}
#1
\end{verbatim}
}%


\begin{document}

\codeline{int foo;}
\codeline{xy%#?!z}

\end{document}

还请阅读 xparse.pdf 的文档以了解此处指定的含义v以及它允许​​什么%等等。除了文字 TAB被纳入到论证之中。

相关内容