Латекс: объявления с моноширинными шрифтами

Так выглядит код в Xcode. xcode

И это в моем листинге, созданном с помощью texlive.

альтернативный текст

И да, я использовал basicstyle = \ ttfamily. Посмотрев руководство по спискам, я не нашел ничего о фиксированных или моноширинных шрифтах.

Пример для воспроизведения

\documentclass[
  article,
  a4paper,
  a4wide,
  %draft,
  smallheadings
]{book}

% Packages below
\usepackage{graphicx}
\usepackage{verbatim} % used to display code
\usepackage{hyperref}
\usepackage{fullpage}
\usepackage[ansinew]{inputenc} % german umlauts
\usepackage[usenames,dvipsnames]{color}
\usepackage{float}
\usepackage{subfig}
\usepackage{tikz}
\usetikzlibrary{calc,through,backgrounds}
\usepackage{fancyvrb}
\usepackage{acronym}
\usepackage{amsthm} % Uuhhh yet another package
\VerbatimFootnotes % Required, otherwise verbatim does not work in footnotes!
\usepackage{listings}

\definecolor{Brown}{cmyk}{0,0.81,1,0.60}
\definecolor{OliveGreen}{cmyk}{0.64,0,0.95,0.40}
\definecolor{CadetBlue}{cmyk}{0.62,0.57,0.23,0}
\definecolor{lightlightgray}{gray}{0.9}

\begin{document}
\lstset{
language=C,                             % Code langugage
basicstyle=\ttfamily,                   % Code font, Examples: \footnotesize, \ttfamily
keywordstyle=\color{OliveGreen},        % Keywords font ('*' = uppercase)
commentstyle=\color{gray},              % Comments font
numbers=left,                           % Line nums position
numberstyle=\tiny,                      % Line-numbers fonts
stepnumber=1,                           % Step between two line-numbers
numbersep=5pt,                          % How far are line-numbers from code
backgroundcolor=\color{lightlightgray}, % Choose background color
frame=none,                             % A frame around the code
tabsize=2,                              % Default tab size
captionpos=b,                           % Caption-position = bottom
breaklines=true,                        % Automatic line breaking?
breakatwhitespace=false,                % Automatic breaks only at whitespace?
showspaces=false,                       % Dont make spaces visible
showtabs=false,                         % Dont make tabls visible
columns=flexible,                       % Column format
morekeywords={__global__, __device__},  % CUDA specific keywords
}

\begin{lstlisting}
    As[threadRow][threadCol] = A[
        threadCol + threadRow * Awidth   // Adress of the thread in the current block
        + i * BLOCK_SIZE                 // Pick a block further left for i+1
        + blockRow * BLOCK_SIZE * Awidth // for blockRow +1 go one blockRow down
    ];
\end{lstlisting}

\end{document}

person Nils    schedule 26.05.2010    source источник
comment
Вы можете привести минимальный рабочий пример? То есть только ваша listings среда и пакет, необходимый для воспроизведения некорректного кода.   -  person Pieter    schedule 26.05.2010
comment
Привет, Нильс, я думаю, у тебя отличный код, я даже заставил его работать с Фортраном 90. Вы не возражаете, чтобы я использовал его в своей диссертации? ;)   -  person Michel Müller    schedule 18.09.2012


Ответы (2)


Проблема в опции columns=flexible. Удалите его, и он будет выглядеть так, как вы хотите. По крайней мере, если у вас нет реальной причины его использовать. Если есть, то моноширинность вашего сниппета не может выглядеть как в Xcode :).

person Pieter    schedule 26.05.2010
comment
Не забудьте использовать basicstyle=\ttfamily, иначе columns=fixed не сработает. (мое дело) - person Rogel Garcia; 25.04.2012
comment
При использовании basicstyle=\ttfamily, columns=flexible можно сохранить, пока вы используете параметр keepspaces=true. Это придаст более упакованный вид. Сродни дословному. - person Rudy Matela; 25.02.2014

Что произойдет, если вы уроните \usepackage{microtype}? Это мешает кернингу и так далее и может быть причиной проблемы, которая, как я полагаю, связана с плохим выравниванием.

person Dave Clarke    schedule 26.05.2010
comment
Разве это не очевидно? Я хочу, чтобы он использовал моноширинный шрифт, чтобы он выглядел как в Xcode (который использует моноширинный шрифт). - person Nils; 26.05.2010
comment
Это не должно быть проблемой, в руководстве по микротипам говорится в главе 9: «Подсказки и предостережения», что он прекрасно работает вместе с fancyvrb и listings. Поскольку он показывает lstset, я полагаю, он использует листинги для этого кода :). - person Pieter; 26.05.2010
comment
Может быть, это проблема табуляции и пробелов? - person Dave Clarke; 26.05.2010
comment
Пробелы в строках с отступом действительно кажутся проблемой. Остальной текст выглядит моноширинным, как и хотелось. Это пробелы или табуляции? - person Pieter; 26.05.2010
comment
Текст - это просто пробелы, табуляции не используются. Дважды проверял .. И сброс микротипа не имеет никакого значения. Но спасибо за попытку помочь до сих пор. - person Nils; 26.05.2010