ohaskell.guide icon indicating copy to clipboard operation
ohaskell.guide copied to clipboard

Расстановка переносов в ePub и веб-версии.

Open fomkin opened this issue 8 years ago • 2 comments

План:

  1. Пандоком (его ведь можно подключать как библиотеку?) разбираю получившийся маркдаун на AST. Почему это нужно: хочется расставлять переносы только в тексте и не расставлять в примерах.
  2. Подключаю https://hackage.haskell.org/package/hyphenation
  3. Расставляю переносы только в тексте
  4. Собираю маркдаун обратно в текст

fomkin avatar Apr 07 '16 08:04 fomkin

Только учти, что с веб-версией получится чуток иначе, ведь .html-главы строятся непосредственно из .md-глав (с помощью Hakyll), а НЕ из того единого временного Markdown (из него только PDF и EPUB).

https://github.com/denisshevchenko/ohaskell.guide/blob/master/src/CreateHtml.hs#L69

denisshevchenko avatar Apr 07 '16 08:04 denisshevchenko

Если только в веб-версии, то делается это, как выяснилось, элементарно (с помощью пакета hakyll-contrib-hyphenation):

 -- src/CreateHtml.hs

 import Hakyll.Contrib.Hyphenation (hyphenateHtml, russian)

 ...

 createChapters :: Rules ()
 createChapters = match chapters $ do
      route $ removeChaptersDirectoryFromURLs
              `composeRoutes` removeChapterNumberFromURLs
              `composeRoutes` setExtension "html"
 compile $ pandocCompiler >>= hyphenateHtml russian -- Переносы только в русских словах.
                          >>= loadAndApplyTemplate chapterTemplateName defaultContext
                          >>= loadAndApplyTemplate defaulTemplateName defaultContext
                          >>= relativizeUrls

Но в этом случае переносы вставляются и в русские слова в примерах кода, что приводит к тому, что в некоторых браузерах в этих словах показаны переносы в виде пробелов, наподобие этого:

тип
воз вра ща е мо го 
зна че ни я

То есть без исключения секций, содержащих примеры кода, никак не обойтись..

denisshevchenko avatar Apr 07 '16 12:04 denisshevchenko