Последният път, когато споменах Haskell, беше в статия за XMonad. Това обаче не е единственото забележително нещо в света, което ви представям.
Със сигурност всички вече знаят Markdown, и ако не ги представя. Това е лек език за маркиране, който ни позволява да бъдем по-бързи и продуктивни при писане на текст. За сега достатъчно.
Е, Markdown не е сам и има множество езици, които изпълняват същата функция. Обикновено всеки се придържа към идеята да вземе обикновен текст с някои марки и да го предаде, за да го оформи като HTML, LaTex и други. Всичко добре до там.
Това поражда няколко проблема. Първо и най-важното е, че някои внедрения нямат todas характеристиките, които искаме. Или език за маркиране, който вече е приложил това, което не ни харесва.
И преди да се хванем за прищевките, трябва да помислите и да осъзнаете, че има по-добро решение. Нещо, което превръща всеки език за маркиране в нещо друго. Всеки.
Тук Хаскел влиза в картината. Чудото, за което говоря, съществува, живо е, има име, работи и е невероятно. Обажда се пандока и то дойде от ръката на философ от университета в Бъркли, Джон Макфарлейн. Дръж се, защото доброто започва.
Всички срещу всички
Можем да очакваме pandoc да предложи посредствено отразяване на всичко, като не се концентрира. Но не. Работи отлично и има невероятни функционалности.
За да бъде просто, вие предавате всеки изходен файл на pandoc (или в Markdown, или в reStructuredText или други, които pandoc поддържа) и го преобразува в завършен формат, като - всички готови ли са? -
LaTex, обикновен HTML, PDF, DocBook, OpenDocument, docx, rtf, man, обикновен текст и до три различни вида HTML презентации; и списъкът ми е кратък, много кратък. Ето диаграма, илюстрираща неговата сила:
И ако това не беше достатъчно, това е библиотека на Haskell (или книжарница, наречете я както искате); които могат да бъдат интегрирани в кода на други програми. Хакил Той е един от най-експлоатираните, като това е статичен генератор на страници, който с помощта на pandoc може да конвертира от безвреден Markdown и малко LaTex в чист HTML.
Тук a списък с сайтове които вече го използват като личен сайт, в стила на блог.
И това е доста бързо, за да го завършите. И дори с всички тези предимства, изглежда, че се разширява само в англосаксонските страни и тук едва ли има налична информация, като например - и боли - презентации от този тип. Може би защото ръководството за употреба е на английски.
Недостатъците
Разбира се, че трябва да има. Освен относително краткото разпространение, повечето издатели не го подкрепят напълно.
Vim има подчертаване на синтаксиса за Markdown и малко друго по подразбиране, така че пропускаме някои от най-страхотните неща за pandoc: неговият разширен синтаксис.
Нещата никога не се повдигат в оригиналния Markdown и които улесняват живота ни, като таблици, цитати, бележки под линия, HTML и LaTex в кода, метаданни и по-усъвършенствани характеристики.
Между другото, Emacs има предимство в това. Той има режим Markdown, който ни дава подчертаване на синтаксиса и няколко полезни команди, но има режим pandoc пълноправен, чийто еквивалент на Vim все още не може да се конкурира с него.
Ако все още се интересувате да го вкарате във Vim, ето файлът на синтаксиса. За emacs трябва да инсталирате режимите за маркиране и pandoc, както вече споменахме.
Направо до точката
Открих pandoc, когато търсех пакета text2tags (друг конвертор, но по-ограничен) en crunchbang и сега знам, че е наличен в Debian конюшня с името, познайте какво, pandoc. A aptitude инсталиране достатъчно за това. Но тези, които използваме ArchLinux първо трябва да претърпим няколко неуспехи.
Този ад на зависимости
Първото нещо, за което мислим, е да направим pacman -S pandoc. Е, не. Няма пакет в официалните хранилища и AUR не работи поради огромното количество зависимости, които изисква. Ако вече знаете нещо за Haskell, сега ще помислите, че cabal ще го реши. И да, но с резерви. За да направите това, трябва да изпълните следното:
sudo pacman -S ghc cabal-install cabal update cabal install pandoc
Това би трябвало да работи, но не го препоръчвам. Особено ако искате да влезете в света на Хаскел, защото това ще ви донесе ужасяващи проблеми в бъдеще.
Със сигурност звучи странно да чуете оплакване за ArchLinux и неговата философия, но ми се струва пълна глупост да премахнете пакета haskell-platform от хранилищата, който предостави на последната среда достатъчно развита съвместими помежду си; защо ghc и cabal-install се актуализираха.
Ако искате да инсталирате други пакети с помощта на cabal, най-добре е да ги изтеглите Antiguos ghc и cabal-install от Машина за връщане на арка.
Инсталираме ги с обикновен pacman -U път на пакет и караме pacman да ги игнорира при актуализиране на системата, във файла /etc/pacman.conf; вътрешна секция ИгнорирайPkg.
Сега сме в състояние да използваме cabal за инсталиране на pandoc и за да работи както трябва, поставяме този ред в нашия .bashrc файл:
износ PATH = ~ / .cabal / bin: $ PATH
И това е. Нещо замислено, но избягваме проблеми. Ако искате да започнете с други пакети, вместо да ги инсталирате локално, можете да използвате hsenv за създаване на изолирани среди и избягване на главоболието от инсталирането, например, Hakyll.
И веднъж ви предупреждавам, че е ужасно. Всичко това, защото Haskell и Cabal все още не са разрешили ада, който вече са се отървали от други езици, като Ruby с неговия пакет и скъпоценни камъни. Както и да е, това малко решение, на което го дължа Иън Рос от групата на Хакил.
Бъди търпелив. Това е дълго инсталиране, защото го компилира за нас.
Използване и заключения
Взимате терминал и изпращате поръчка като тази:
pandoc -o output-file.ext -i original-file.md
Когато Markdown (* .md, е разширението, което използвам) може да бъде заменен от всеки друг формат и .ext от всеки друг наличен в изхода.
За мен, че правя това практически всеки ден, ми помогна много, особено за експортиране в OpenDocument.
А екосистемата е невероятна. Самият MacFarlane е разработил уики в Haskell, който Pandoc използва, за да конвертира страниците си, но това е за друга история. Между другото, този пост беше написан с гордост с Pandoc, както повечето от тези, които съм писал досега,
Използвам и Markdown. Кейт и Gedit могат да имат инсталиран плъгин, за да подчертаят синтаксиса. След това, за да го конвертирам в ODT, избирам MultiMarkdown, той е този, който най-много, как да го кажа, "уважава текста", така че при копирането му в документ със стилове на абзаци да е по-удобно. Pandoc не ми е дал същите резултати или поне не знаех как да го направя 😛
Можете да накарате Pandoc да вземе само стандартната Markdown, като активирате опцията –strict; ако имаш предвид това. Основното му предимство обаче е гъвкавостта между форматите.
Препоръчайте го, с малкото, което видях, че го използват, не ми навреди.
Използвал съм го, за да премина от LaTeX към reStructuredText. Прави го много добре (през повечето време xD)
Интересно, благодаря за споделянето.