ohaskell.guide
ohaskell.guide copied to clipboard
Расстановка переносов в ePub и веб-версии.
План:
- Пандоком (его ведь можно подключать как библиотеку?) разбираю получившийся маркдаун на AST. Почему это нужно: хочется расставлять переносы только в тексте и не расставлять в примерах.
- Подключаю https://hackage.haskell.org/package/hyphenation
- Расставляю переносы только в тексте
- Собираю маркдаун обратно в текст
Только учти, что с веб-версией получится чуток иначе, ведь .html
-главы строятся непосредственно из .md
-глав (с помощью Hakyll), а НЕ из того единого временного Markdown (из него только PDF и EPUB).
https://github.com/denisshevchenko/ohaskell.guide/blob/master/src/CreateHtml.hs#L69
Если только в веб-версии, то делается это, как выяснилось, элементарно (с помощью пакета 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
Но в этом случае переносы вставляются и в русские слова в примерах кода, что приводит к тому, что в некоторых браузерах в этих словах показаны переносы в виде пробелов, наподобие этого:
тип
воз вра ща е мо го
зна че ни я
То есть без исключения секций, содержащих примеры кода, никак не обойтись..