Muszę podświetlić kod źródłowy w LaTeX. Pakiet listings
wydaje się najlepszym wyborem dla większości przypadków użycia i dla mnie był do tej pory.
Jednak teraz potrzebuję większej elastyczności. Zasadniczo to, czego szukam, to prawdziwy leksykon. W szczególności potrzebuję (dla własnej definicji języka), aby zdefiniować (i wyróżnić!) Własne style liczbowe. listings
nie zezwala na wyróżnianie liczb w kodzie. Muszę jednak stworzyć coś takiego:
listings
również nie radzi sobie z dowolnymi ogranicznikami ciągów. Rozważ następujący poprawny kod Ruby:
s = %q!this is a string.!
Tutaj !
można zastąpić prawie dowolnym separatorem.
(To listings
nie jest w stanie obsłużyć Unicode, jest również irytujące, ale to kolejny problem.)
Idealnie szukam rozszerzenia, listings
które pozwala mi na dostarczanie bardziej złożonych reguł leksykalnych. Ale poza tym szukam również realnych alternatyw.
Inne wątki sugerują użycie Pygments, które mogą generować wyjście LaTeX. Jest nawet pakiet - texments
- ułatwiający przejście.
Jednak to bardzo brakuje funkcji. W szczególności interesuje mnie listings
numeracja linii w stylu, odwołania do linii kodu źródłowego oraz możliwość osadzenia LaTeX w kodzie źródłowym (opcje texcl
i mathescape
in listings
).
Jako przykład podajemy zestaw kodu źródłowego, listings
który pokazuje niektóre rzeczy, które powinien zapewnić zamiennik:
[„Dodatek boczny” zmodyfikowany z Bit Twiddling Hacks]
źródło
Odpowiedzi:
Biorąc porady Normana do serca, mam posiekany wspólnie rozwiązanie, które stosowane (a połatany ) Pygments do wyróżniania i pchnął w tak wielu funkcji, jak to możliwe bez rozerwania ;-)
Stworzyłem również pakiet LateX, kiedy moja łatka Pygments została wydana w wersji 1.2 …
Prezentacja wybita
wybite to pakiet, który wykorzystuje Pygments celu zapewnienia najwyższej klasy podświetlanie składni w LaTeX. Na przykład pozwala na następujące dane wyjściowe.
Oto minimalny plik do odtworzenia powyższego kodu (zauważ, że włączenie znaków Unicode może wymagać XeTeX)!
Można to wpisać za pomocą następującego polecenia:
(Ale wybite również współpracuje z
latex
ipdflatex
...)minted.sty
działa podobnie,texments.sty
ale umożliwia dodatkowe funkcje.Jak to zdobyć
minted znajduje się na liście CTAN ( informacje o pakiecie )
dokumentacja jest oczywiście zawarta.
mennica jest teraz utrzymywana przez Geoffreya Poore'a. Wersja rozwojowa, w tym najnowszy
.sty
plik , jest dostępna na stronie github.com/gpoore/minted i można z niej sklonować.Jeszcze raz dziękuję Normanowi za motywowanie mnie do wyprodukowania tego opakowania.
źródło
easy_install
), proces ten nigdy nie będzie bardzo płynny.TeX jest (słynny) w pełni Turinga, ale jestem pewien, że będziesz musiał napisać to rozszerzenie samodzielnie. Dokumentacja wyjaśnia, że oryginalny autor
listings
osierocił go w 2004 r. I że nie był aktualizowany od 2006 r. Pakiet nie został zaprojektowany w celu zastąpienia formatowania literałów liczbowych, ale można go zmodyfikować, zmieniając definicja\lst@ProcessDigit
. Jeśli to nie zadziała, musisz szczegółowo zrozumieć, w jaki sposób działają opcje „stylu identyfikatora”, i będziesz musiał powielić tę maszynerię dla literałów liczbowych.Nie do końca rozumiem, dlaczego jesteś tak niechętny wprowadzeniu zewnętrznego narzędzia do swojego zestawu narzędzi, ale ponieważ jesteś, będziesz musiał wykonać dodatkową pracę. Po zapoznaniu się z kodem źródłowym oczekuję, że modyfikacja
listings
powinna być możliwa, ale osobiście wolałbym zamiast tego wstępnie przetworzyć mój LaTeX.źródło
\label
wewnątrz kodu.listings
, to już widziałem jej źródło - i niestety w ogóle go nie rozumiem. Moje umiejętności TeX nie są nigdzie w pobliżu tego poziomu. Do tej pory i tak korzystałem tylko z podzbioru LaTeX TeX-a.minted
pomocą procesu publikowania LNCS Springera.Jest to pakiet, który konwertuje kod źródłowy na TeX i LaTeX z podświetlaniem składni. Możliwe jest łatwe dodawanie niestandardowych definicji języka programowania.
Highlight obsługuje 100 języków programowania i zawiera 50 motywów kolorystycznych. Zawiera formatowanie i wcięcie kodu.
Nie użyłem go, żeby wiedzieć, jak DOBRZE działa, ale ktoś inny, kogo znam, powiedział, że działa całkiem dobrze. Jeśli będę miał okazję, sam to wypróbuję i zobaczę.
źródło
highlight
podziela jednak wszystkie problemy Pygments. W szczególności nie jest to pakiet LaTeX , pomimo tego, co mówi jego opis. Jest to po prostu samodzielny program. Problem, podobnie jak w przypadku Pygments, polega na tym, jak używać go w sposób znaczący z poziomu LaTeX i zapewniać wszystkie miłe rzeczylistings
.