2010-07-14 2 views
4

Я использую listings пакет для подсветки синтаксиса, созданный со следующими аргументами:LaTeX списки пакет: другой стиль для констант/классов/переменных

\lstset{ 
    language=Java, 
    captionpos=b, 
    tabsize=3, 
    frame=lines, 
    numbers=left, 
    numberstyle=\tiny, 
    numbersep=5pt, 
    breaklines=true, 
    showstringspaces=false, 
    basicstyle=\footnotesize, 
    identifierstyle=\color{magenta}, 
    keywordstyle=\bfseries, 
    commentstyle=\color{darkgreen}, 
    stringstyle=\color{red} 
} 

Это работает довольно хорошо, в результате чего:

(screenshot 1 of resulting document) (screenshot 2 of resulting document)

то, что я хотел бы, что константы MIN_PIXELS и MAX_PROCESSING_TIME оформлены в другом цвете, а имена классов Rectangle, Bitmap и т. Д. Оформлены в еще одном цвете. Было бы неплохо, если бы я мог покрасить цифры, но это не мое основное внимание.

Есть ли способ сделать это?

ответ

1

От документации по спискам (страница 20ff.): \lstset{morecomment=[s][\color{blue}]{/*+}{*/}, morecomment=[s][\color{red}]{/*-}{*/}} Вы можете попробовать установить morekeywords и дать конкретное ключевое слово нужного цвета.

+0

Отличное предложение, я дам ему свинг. Я бы предпочел метод, основанный на регулярных выражениях, если это вообще возможно, потому что в противном случае мне нужно было бы указать все имена классов и константы в 'lstset'. –

+0

Это работает! Я смог выделить конкретные ключевые слова; например для 'MIN_PIXELS' я использовал:' morecomment = [s] [\ color {darkblue}] {MIN_PIXELS} {\} ' –

3

Объявления работают только по ключевым словам, так что это невозможно.

Minted использует библиотеку python (Pygments) и может делать любые выделения, поскольку он способен понимать код, а не только ключевые слова.

+0

Спасибо за предложение. Я искал решение специально для «листингов», но я буду рассматривать «чеканить» в будущем. –

+0

Меня раздражали некоторые другие проблемы с 'listing', поэтому я тоже переключился на' minted'. Было больно установить, но это определенно стоит! –