我想使用比例字体和listings
包来排版代码,但无论我做什么,对齐总是关闭。以下是 Java 中的一个例子(取自维基百科):
\documentclass[10pt,pdftex]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{listings}
\begin{document}
\lstset{language=Java, columns=fullflexible, keepspaces}
\begin{lstlisting}
import javax.swing.JFrame; // Importing class JFrame
import javax.swing.JLabel; // Importing class JLabel
public class HelloWorld {
public static void main(String[] args) {
JFrame frame = new JFrame(); // Creating frame
frame.setTitle("Hi!"); // Setting title frame
frame.add(new JLabel("Hello, world!")); // Adding text to frame
frame.pack(); // Setting size to smallest
frame.setLocationRelativeTo(null); // Centering frame
frame.setVisible(true); // Showing frame
}
}
\end{lstlisting}
\end{document}
请注意,使用上面看到的等宽字体,所有注释都对齐得很好。我尝试使用columns=flexible
、columns=fullflexible
、columns=spaceflexible
和的不同组合keepspaces
,但都无法正确对齐。
理想的结果应该是这样的:
请注意,注释的对齐方式与源代码中的对齐方式相同,并且没有引入虚假空格。
我认为可以通过一种机制自动检测源代码中何时使用对齐,从而实现这一点。由于我使用制表符进行缩进,使用空格进行对齐,因此这种机制可以是例如检测两个或更多连续空格。
我的 LaTeX 编程技能太差,无法自己创建这个,但也许这里有人可以尝试一下?