Раскрасить числа в листинге (латекс) - PullRequest
1 голос
/ 26 июля 2010

Я хочу знать, можно ли раскрасить числа в пакете lstlisting из латекса. Например, я хочу, чтобы все числа были красными, даже 0x0F (шестнадцатеричный) и 0b00001111 (bin):

void SetaPWM2(unsigned char porcento)
{
  //100 * 256 = 25.600
  unsigned int val = porcento * PR2;
  val /= 25;
  //garante que tem apenas 10 bits
  val &= 0x03ff;
  //os 8 primeiros bits são colocados no CCPR1L
  CCPR2L = val >> 2;
  //os últimos dois são colocados na posição 5 e 4 do CCP1CON
  CCP2CON |= (val & 0b00001111) << 4;
}

Если нет способа, есть ли другой пакет, который может это сделать?

PS: я работаю с языком Си. Спасибо

1 Ответ

2 голосов
/ 27 июля 2010

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

По крайней мере, поддерживается шестнадцатеричный код напрямую, но в демоверсии Pygments он терпит неудачу с двоичными числами и, вероятно, будет хорошо, если вы просто добавите строку к коду подсветки (вероятно, регулярное выражение, подобноекоторый разбирает hex).

EDIT:

В pygments\lexers\compiled.py строка 60 содержит:

(r'0x[0-9a-fA-F]+[Ll]?', Number.Hex),

, который разбирает hex для C. Вы можете добавить под ним что-то вроде (r'0b[0-1]+[Ll]?', Number.Hex), (используя Number.Hex, потому что в противном случае вам, вероятно, потребуется добавить Number.Bin в tokes.py или что-то в этом роде).

...