查阅此链接后:https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings为了编写一些代码,我得出了以下结论:
\lstset{
language=C,
backgroundcolor=\color{highlight},
blah, blah, blah
}
\newcommand{\insertcode}[2]{\begin{itemize}\item[]\lstinputlisting[caption=#2,label=#1]{#1}\end{itemize}}
最后,我没有使用newcommand
,而是使用了,\lstinputlisting{my_file.c}
而且效果很好。
(上述文件包含在main.tex
文件中)
现在我想添加第二种语言,可以这样吗
\lstset{
language=python,
backgroundcolor=\color{highlight},
blah, blah, blah
}
是否应该将其包含在不同的文件中?我是否应该在同一个文件中创建一个新命令?如果是,那会是什么?无论哪种情况,有人可以提供结构示例吗newcommand
?
任何想法都将受到赞赏。
答案1
\lstset
如果所有代码片段的基本格式都相同,则无需为每种语言设置单独的命令。
用于\lstset
设置代码格式的基本参数,然后在您的\lstinputlisting
命令中只需将语言作为参数传递即可:
\lstinputlisting[language=C]{file.c}
\lstinputlisting[language=python]{file.py}
如果您确实希望为不同的语言设置不同的样式,可以使用命令来实现\lstdefinestyle
。以下是为 LaTeX 和 Ruby 使用的不同样式的示例:
\documentclass{article}
\begin{filecontents}{hello.rb}
class Hello
def initialize(name)
@name = name.capitalize
end
def sayHi
puts "Hello #{@name}!"
end
end
hello = Hello.new("world")
hello.sayHi
\end{filecontents}
\begin{filecontents*}{hello.tex}
\documentclass{article}
\begin{document}
Hello World!
\end{document}
\end{filecontents*}
\usepackage{listings}
\usepackage{xcolor}
\lstset{%
basicstyle=\ttfamily\small,
commentstyle=\itshape\ttfamily\small,
showspaces=false,
showstringspaces=false,
breaklines=true,
breakautoindent=true,
captionpos=t
}
\lstdefinestyle{TeX}{language=[LaTeX]TeX, frame=none,texcsstyle=*\color{blue}}
\lstdefinestyle{ruby}{language=Ruby, frame=leftline,keywordstyle=\color{red},numbers=left}
\begin{document}
\section{Sample LaTeX document}
\lstinputlisting[style=TeX]{hello.tex}
\section{Sample Ruby document}
\lstinputlisting[style=ruby]{hello.rb}
\end{document}