Pandoc ve bilinmeyen harikalar

Haskell'den en son bahsettiğimde XMonad. Ancak, size sunduğum dünyadaki tek dikkate değer şey bu değil.

Elbette herkes zaten biliyor Markdownve onları sunmazsam. Metin yazarken daha hızlı ve daha üretken olmamızı sağlayan hafif bir biçimlendirme dilidir. Şimdilik yeter.

Markdown yalnız değil ve aynı işlevi yerine getirecek çok sayıda dil var. Normalde herkes, bazı işaretlerle düz bir metni alıp HTML, LaTex ve diğerleri olarak şekillendirmek için geçirme fikrine gider. Oraya kadar her şey yolunda.

Bu birkaç sorunu beraberinde getirir. Birincisi ve en önemlisi, bazı uygulamalarda tüm istediğimiz özellikler. Veya bunu zaten uygulamış olan bir biçimlendirme dili bizden hoşlanmıyor.

Ve kaprislere kapılmadan önce, daha iyi bir çözüm olduğunu düşünmeli ve anlamalısınız. Herhangi bir biçimlendirme dilini başka bir şeye dönüştüren bir şey. Kimse.

Haskell burada devreye giriyor. Bahsettiğim mucize var, yaşıyor, bir adı var, çalışıyor ve harika. Kendini çağırıyor pandok ve Berkeley Üniversitesi'nden John MacFarlane adlı bir filozofun elinden geldi. Bekle, çünkü iyilik başlıyor.

Todos kontra todos

Pandoc'un konsantre olmadan her şeyi vasat bir şekilde yayınlamasını bekleyebiliriz. Ama hayır. Mükemmel bir şekilde çalışıyor ve inanılmaz işlevlere sahip.

Basit tutmak için, herhangi bir kaynak dosyayı pandoc'a iletirsiniz. (Markdown'da veya reStructuredText'te veya pandoc'un desteklediği diğerlerinde) ve bunu bitmiş bir biçime dönüştürür, örneğin - herkes hazır mı? -

LaTex, düz HTML, PDF, DocBook, OpenDocument, docx, rtf, man, düz metin ve en fazla üç farklı türde HTML sunumu; ve listem kısa, çok kısa. İşte gücünü gösteren bir şema:

Ve bu yeterli gelmediyse, bir Haskell kütüphanesi (veya kitapçı, istediğiniz gibi adlandırın); diğer programların kodlarına entegre edilebilir. hakyll En çok istismar edilenlerden biridir, bu, pandoc kullanmanın zararsız Markdown ve bazı LaTex'ten saf HTML'ye dönüştürebildiği statik bir sayfa oluşturucusudur.

İşte bir site listesi blog tarzında zaten kişisel bir site olarak kullanan.

Ve bitirmek oldukça hızlı. Ve tüm bu avantajlara rağmen, öyle görünüyor ki, yalnızca Anglo-Sakson ülkelerinde genişliyor ve burada bu türden sunumlar gibi -ve canı yanan- neredeyse hiç bilgi yok. Belki de kullanım kılavuzunun İngilizce olduğu içindir.

Eksiler

Tabii ki olmalı. Nispeten kısa yayılmasının yanı sıra, çoğu yayıncı onu tam olarak desteklemiyor.

Vim sözdizimi vurgulamasına sahiptir paragraf Markdown ve varsayılan olarak çok az şey, bu yüzden pandoc hakkındaki en harika şeylerden bazılarını kaçırıyoruz: genişletilmiş sözdizimi.

Orijinal Markdown'da asla ortaya çıkmayan ve kod içindeki tablolar, alıntılar, dipnotlar, HTML ve LaTex gibi hayatımızı kolaylaştıran şeyler, meta veriler ve daha gelişmiş özellikler.

Bu arada Emacs'ın bu konuda bir avantajı var. Bize söz dizimi vurgulama ve birkaç kullanışlı komut veren bir Markdown moduna sahiptir, ancak bir pandoc modu tam teşekküllü, Vim eşdeğeri hala onunla rekabet edemeyen.

Hala onu Vim'e sokmakla ilgileniyorsanız, işte sözdizimi dosyası. Emacs için, daha önce belirtildiği gibi, markdown ve pandoc modlarını yüklemeniz gerekir.

Noktasına doğru

Text2tags paketini ararken pandoc'u keşfettim (başka bir dönüştürücü ancak daha sınırlı) en CrunchBang ve şimdi mevcut olduğunu biliyorum Debian adıyla kararlı, tahmin et ne oldu, pandoc. Bir yetenek yükleme bunun için yeterli. Ama kullandıklarımız Arch Linux Önce birkaç aksilik yaşamalıyız.

Bu bağımlılık cehennem

İlk düşündüğümüz şey bir pacman -S pandocu yapmaktır. Hayır. Resmi depolarda paket yoktur ve ihtiyaç duyduğu büyük miktarda bağımlılık nedeniyle AUR çalışmaz. Haskell hakkında zaten bir şey biliyorsanız, şimdi Cabal'ın bunu çözeceğini düşüneceksiniz. Ve evet, ama çekinceleri var. Bunu yapmak için aşağıdakileri çalıştırmanız gerekir:

sudo pacman -S ghc cabal-install cabal güncellemesi cabal install pandoc

Bu işe yaramalı ama tavsiye etmiyorum. Özellikle Haskell dünyasına girmek istiyorsanız, çünkü bu size gelecekte korkunç sorunlar getirecektir.

ArchLinux ve felsefesi hakkında bir şikayet duymak elbette garip geliyor, ancak son ortamı yeterince geliştiren ve son ortamı sağlayan haskell-platform paketini depolardan çıkarmak bana tamamen saçma geliyor. birbiriyle uyumlu; ghc ve cabal-install neden güncellendi.

Cabal kullanarak diğer paketleri kurmak istiyorsanız, paketleri indirmek en iyisidir eski ghc ve cabal-install Kemer Geri Alma Makinesi.

Onları basit bir pacman ile kuruyoruz -U paket yolu ve sistemi güncellerken /etc/pacman.conf dosyasında pacman'ın bunları yok saymasını sağlarız; iç bölüm Yoksay Pkg.

Artık pandoc'u yüklemek için cabal'ı kullanabiliyoruz ve olması gerektiği gibi çalışması için bu satırı .bashrc dosyamıza koyuyoruz:

dışa aktar PATH = ~ / .cabal / bin: $ PATH

Ve bu kadar. Olağanüstü bir şey ama biz problemlerden kaçınıyoruz. Diğer paketlerle başlamak istiyorsanız, bunları yerel olarak kurmak yerine kullanabilirsiniz. hsenv İzole ortamlar oluşturmak ve örneğin Hakyll kurulumunun baş ağrısını önlemek için.

Ve bir kez seni bunun korkunç olduğu konusunda uyarmıştım. Bütün bunlar, Haskell ve Cabal'ın, Bundle ve mücevherleriyle Ruby gibi, diğer dillerin zaten kurtulduğu bağımlılık cehennemini henüz çözmediği için. Her neyse, borçlu olduğum bu küçük çözüm ıan ross Hakyll grubunun.

Sabırlı ol. Bu uzun bir kurulum çünkü bizim için derliyor.

Kullanım ve sonuçlar

Bir terminal alırsınız ve şöyle bir sipariş gönderirsiniz:

pandoc -o çıktı-dosya.ext -i orijinal-dosya.md

Markdown (* .md, kullandığım uzantıdır), çıktıda bulunan herhangi bir başka biçim ve .ext ile değiştirilebilir.

Benim için bunu pratik olarak her gün yapıyorum, özellikle OpenDocument'e ihracat yapmak bana çok yardımcı oldu.

Ve ekosistem inanılmaz. MacFarlane, Haskell'de Pandoc'un sayfalarını dönüştürmek için kullandığı bir wiki geliştirdi, ancak bu başka bir hikaye için. Bu arada, bu gönderi şimdiye kadar yazdıklarım gibi Pandoc ile gururla yazılmıştır.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   gadi dijo

    Markdown kullanıyorum. Kate ve Gedit, sözdizimini vurgulamak için bir eklenti yükleyebilir. Sonra onu ODT'ye dönüştürmek için MultiMarkdown'u tercih ediyorum, daha çok, nasıl desek, "metne saygı duyuyor", böylece onu paragraf stillerine sahip bir belgeye kopyalarken daha rahat. Pandoc bana aynı sonuçları vermedi ya da en azından bunu nasıl yapacağımı bilmiyordum 😛

    1.    anti dijo

      –Strict seçeneğini etkinleştirerek Pandoc'un yalnızca standart Markdown'u almasını sağlayabilirsiniz; Eğer kastettiğin buysa. Bununla birlikte, ana avantajı, formatlar arasındaki çok yönlülüktür.
      Tavsiye et, kullandıklarını gördüğüm kadar azıyla bana zarar vermedi.

  2.   erunamoJAZZ dijo

    Bunu LaTeX'ten reStructuredText'e gitmek için kullandım. Bunu çok iyi yapıyor (çoğu zaman xD)

  3.   msx dijo

    İlginç, paylaştığınız için teşekkürler.