使用比例字体列表的代码对齐效果较差

使用比例字体列表的代码对齐效果较差

我想使用比例字体和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=flexiblecolumns=fullflexiblecolumns=spaceflexible和的不同组合keepspaces,但都无法正确对齐。

理想的结果应该是这样的:

在此处输入图片描述

请注意,注释的对齐方式与源代码中的对齐方式相同,并且没有引入虚假空格。

我认为可以通过一种机制自动检测源代码中何时使用对齐,从而实现这一点。由于我使用制表符进行缩进,使用空格进行对齐,因此这种机制可以是例如检测两个或更多连续空格。

我的 LaTeX 编程技能太差,无法自己创建这个,但也许这里有人可以尝试一下?

相关内容