我正在寻找一个可以在 LaTeX 中高亮显示 ruby 源代码的包。我找到了这个主题:https://stackoverflow.com/questions/1966425/source-code-highlighting-in-latex
但它是 2009 年的,我想知道是否有更好的解决方案。我无法minted
在 Mac 上工作。也许有人知道更好、更简单的解决方案。我目前正在玩
\begin{lstlisting}[
label=listing:RubyTest,
float=h,
caption=test.rb,
firstnumber=1,
language=Ruby
]
a = 5
b = a * 5
puts b
puts b + 3
class Test < Test::SomeClass
@test = 3
def bar
if foo
puts "foo"
else
puts "bar
end
end
end
\end{lstlisting}
但它只是被格式化而没有任何颜色。
答案1
要在代码列表中包含颜色,您必须使用命令指定所需的颜色\lstset
,如下面的代码所示:
\documentclass[]{minimal}
\usepackage[dvipsnames]{xcolor}
\usepackage{listings}
\lstloadlanguages{Ruby}
\lstset{%
basicstyle=\ttfamily\color{black},
commentstyle = \ttfamily\color{red},
keywordstyle=\ttfamily\color{blue},
stringstyle=\color{orange}}
\begin{document}
\begin{lstlisting}[language=Ruby]
#this is a comment
a = 5
b = a * 5
puts b
puts b + 3
class Test < Test::SomeClass
@test = 3
def bar
if foo
puts "foo"
else
puts "bar"
end
end
end
\end{lstlisting}
\end{document}
至于minted
软件包,您还必须安装Pygments
TeX 外部的 。安装完成后,minted
即可正常工作。
添加:我的解决方案和 Mike Renfro 的解决方案的区别在于颜色信息给出的位置。当您使用不同的格式并且经常更改设置时,Mike 的解决方案是最好的。如果您总是想在整个文档中使用相同的(颜色)设置(即使可能使用不同的编程语言),我写的解决方案是最好的。您可以将两者混合使用:设置一些全局选项,偶尔为特定代码列表使用其他选项。
答案2
您缺少 listings 包的各种样式选项(以及 bar 上的结束引号)。您可能还需要 color 包,除非它是通过其他包加载的。要获取最简单的示例,请尝试
\documentclass{article}
\usepackage[english]{babel}
\usepackage{xcolor,listings}
\begin{document}
\begin{lstlisting}[
label=listing:RubyTest,
float=h,
caption=test.rb,
firstnumber=1,
language=Ruby,
basicstyle=\ttfamily,
keywordstyle=\color{red},
stringstyle=\color{blue},
]
a = 5
b = a * 5
puts b
puts b + 3
class Test < Test::SomeClass
@test = 3
def bar
if foo
puts "foo"
else
puts "bar"
end
end
end
\end{lstlisting}
\end{document}
得到以下结果
答案3
对我来说最好的是 pygmentize (python 库)
作为输出,您可以设置乳胶文件,输入例如 ruby 或任何其他内容,您将获得漂亮的彩色代码。