denisshevchenko / ohaskell.guide

Ваша первая книга о языке Haskell
https://www.ohaskell.guide
Other
261 stars 29 forks source link

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

Open fomkin opened 8 years ago

fomkin commented 8 years ago

План:

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

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

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

denisshevchenko commented 8 years ago

Если только в веб-версии, то делается это, как выяснилось, элементарно (с помощью пакета 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

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

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

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