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