Раскрасить числа в листинге (латекс)
Я хочу знать, возможно ли раскрасить числа в пакете 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 ответ
Minted использует библиотеку Python (Pygments) и может делать любые выделения для LaTeX, так как он способен понимать код, а не только ключевые слова, как листинги.
По крайней мере, hex поддерживается напрямую, но в демонстрации Pygments он не работает с двоичными числами и, вероятно, будет хорошо, если вы просто добавите строку к коду подсветки (вероятно, регулярное выражение, похожее на то, которое анализирует hex).
РЕДАКТИРОВАТЬ:
В 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 или что-то в этом роде).