我正在尝试编写\newcommand
一个verbatim
:
\newcommand{\codeline}[1]{\begin{verbatim}{#1}\end{verbatim}}
并将其用作
\codeline{int foo;}
但它给出了错误“扫描 \@xverbatim 的使用时文件结束”。如何修复它?
答案1
如果你想要一个简单的实现,那就去吧
\newcommand[1]{{\small\texttt{#1}}}
如果您想要更详细的控制,您应该使用fancyvrb
或minted
包。
答案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被纳入到论证之中。