SORU
27 Aralık 2009, Pazar


Kaynak Lateks vurgulayarak kodu

LaTeX kaynak kodu vurgulamak istiyorum. listings en iyi seçim gibi gözüküyor paket durumlarda kullanmak benim için şimdiye kadar.

Ancak, artık daha fazla esneklik istiyorum. Aradığım şey geneldegerçeklexer. Özellikle, istiyorum (kendi dilinde bir tanım için) tanımlamak için (ve vurgulayın!) kendi numara stilleri. listings kod numaraları vurgulama izin vermiyor. Ancak, böyle bir şey üretmek istiyorum:

Required result

listings da dizeleri keyfi sınırlayıcıları ile baş edemez. Düşünün aşağıdaki geçerli Ruby kod:

s = %q!this is a string.!

Burada, ! neredeyse tarafından değiştirilebilirherhangi birsınırlayıcı.

(listings Unicode da oldukça can sıkıcı, ama bu başka bir mesele işlemek.)

İdeal olarak, ben daha karmaşık lexing kuralları sağlamasına izin verir listings bir uzantısı arıyorum. Ama bunun dışında, ayrıca uygun alternatifler arıyorum.

Other threads Lateks çıktı üretebilen Pygments kullanarak önerdi. Hatta bir paket– texments – geçişi kolaylaştırmak için var.

Ancak, bu özellikleri fena halde yoksun. Özellikle benim ilgi listingstarzı satır numaralandırma, kaynak kodu hattı başvuruları ve olasılığı gömme LaTeX kaynak kodu (seçenekler texcl mathescape listings).

Örnek olarak, burada bir yedek de sağlamaları gereken bazı şeyler gösterir listings ile kaynak kod yerleştirmek

LaTeX listings example: Sideways addition [“Yan ayrıca” Bit Kesmek Öldürmek değiştirilmiş]

CEVAP
31 Aralık 2009, PERŞEMBE


Kalp Norman tavsiyesi alarak, birlikte (patched) vurgulayarak ve mümkün olduğunca çok sayıda özellikleri itti patlama olmadan için Pygments kullanılan bir çözüm sızdım ;-)

Ayrıca Lateks bir paket oluşturduk, Pygments bandı version 1.2 ... piyasaya çıktı bir kere

Zararlıdarp

mintedPygments birinci sınıf sağlamak için kullandığı bir paket LaTeX sözdizimi vurgulama. Örneğin, aşağıdaki çıktıyı verir.

fancy LaTeX example

İşte yukarıdaki kod (Unicode karakterleri de dahil olmak üzere XeTeX gerektirebilir dikkat edin) yeniden oluşturmak için en az bir dosya!

\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage{minted}

\setsansfont{Calibri}
\setmonofont{Consolas}

\begin{document}
\renewcommand{\theFancyVerbLine}{
  \sffamily\textcolor[rgb]{0.5,0.5,0.5}{\scriptsize\arabic{FancyVerbLine}}}

\begin{minted}[mathescape,
               linenos,
               numbersep=5pt,
               gobble=2,
               frame=lines,
               framesep=2mm]{csharp}
  string title = "This is a Unicode π in the sky"
  /*
  Defined as $\pi=\lim_{n\to\infty}\frac{P_n}{d}$ where $P$ is the perimeter
  of an $n$-sided regular polygon circumscribing a
  circle of diameter $d$.
  */
  const double pi = 3.1415926535
\end{minted}
\end{document}

Bu dizgisini aşağıdaki komutu kullanarak:

xelatex -shell-escape test.tex

(Amadarpayrıca latex ile çalışır ve pdflatex ...)

minted.sty texments.sty benzer çalışır ama ek özellikler sağlar.

Nasıl bunu elde etmek için

Bir kez daha, bana bu paketi üretmek için motive etmek için Norman için teşekkürler.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • erikbjgn's channel

    erikbjgn's c

    12 Mayıs 2008
  • kalabrandmusic

    kalabrandmus

    25 Kasım 2009
  • Rachel Raum

    Rachel Raum

    10 EYLÜL 2007