在我的文档中我使用了:
\renewcommand\lstlistingname{Algorithm}
\renewcommand\lstlistlistingname{Algorithms}
重命名我的lstlistings
标题。
问题是,现在我想添加不同类型的代码,但lstinputlisting
我希望它下面有另一个标题。有没有办法定义一个新listings
环境并再次将上述命令应用于它?
例如,理想情况下使用两个新命令\c_lstinputlisting{testc.c}
,\cpp_lstinputlisting{testc.cpp}
并将给出两个不同的标题名称,如
C 代码 1.x
和
C++ 代码 1.x
如果我不清楚,我说的不是标题本身,而是标题前面的内容,即标题名称的通用名称。如果不进行编辑,则为默认
清单 1.x
答案1
您可以定义命令,以便它们本地改变所涉及的控制序列的含义:
\documentclass{book}
\usepackage{listings}
\lstset{numberbychapter}
\makeatletter
\newcommand{\cinputlisting}[2][]{%
\begingroup\let\c@lstlisting\c@clisting
\renewcommand\lstlistingname{C file}%
\lstinputlisting[
language=C,
% <other specific options>
#1]{#2}\endgroup}
\newcommand{\cppinputlisting}[2][]{%
\begingroup\let\c@lstlisting\c@cpplisting
\renewcommand\lstlistingname{C++ file}%
\lstinputlisting[
language=C++,
% <other specific options>
#1]{#2}\endgroup}
\makeatother
\newcounter{clisting}[chapter]
\newcounter{cpplisting}[chapter]
\begin{document}
\mainmatter
\chapter{One}
\cinputlisting[caption=something]{test.c}
\cppinputlisting[caption=whatever]{test.cpp}
\end{document}