Как составить список кода с выравниванием и подсветкой синтаксиса?

Как составить список кода с выравниванием и подсветкой синтаксиса?

Я хотел бы эффективно набрать код пропорциональным шрифтом с подсветкой синтаксиса и горизонтальным выравниванием. Как это сделать?

Пакетспискипредлагает подсветку синтаксиса, но не выравнивание. Если я использую пропорциональный шрифт, то, насколько мне известно, нет возможности выровнять текст по горизонтали.

Окружающая средатабуляцияпозволяет выравнивание, но не автоматическую подсветку синтаксиса. Если я хочу иметь цвета, мне нужно вручную их туда поместить. Также внутритабуляция— это обычный текст, поэтому кавычки и апострофы изменяются, а пробелы сжимаются до одного пробела.

Мне не удалось объединить эти две среды. Каждый раз это не компилировалось или выглядело неправильно.


Вот пример того, как это должно выглядеть. Я сделал это с помощью табуляции, используя некоторые обходные пути и ручное выделение.

пример листинга кода пропорциональным шрифтом с выравниванием и подсветкой синтаксиса

Если убрать выделение и обходные пути, то код будет таким:

\begin{tabbing}
    (defclass request () \\
    \hspace{1.5em} \= ( \= (url \= :reader request-url \\
        \>  \>  \> :initarg :url \\
        \>  \>  \> :type string} \\
        \>  \>  \> :documentation "Request URL.") \\
        \>  \> (method \= :reader request-method \\
        \>  \>  \> :initarg :method \\
        \>  \>  \> :initform :get \\
        \>  \>  \> :type keyword\\
        \>  \>  \> :documentation "Request method, e.g :get, :post.") \\
        \>  \> (parameters \= :reader request-parameters \\
        \>  \>  \> :initarg :parameters \\
        \>  \>  \> :initform nil \\
        \>  \>  \> :type association-list \\
        \>  \>  \> :documentation "The request parameters, as an association list.")) \\
        \> (:documentation "A general HTTP request."))
\end{tabbing}

Связанный контент