Вывод таблицы содержания Pandoc HTML


Я использую pandoc (не исполняемый файл в командной строке, а библиотеку haskell), и я генерирую вывод HTML. Я не могу сделать так, чтобы оглавление появилось в выходных данных. Грубо говоря, у меня есть это:

...
writeHtml (def {writerTOCDepth = 4, writerTableOfContents = True} m)
where m =
  [ Header 1 ("myIdentifier",[],[]) [Str "Vulnerabilities"]                                           
  , Div nullAttr otherStuff                                                                                
  ]

Мне кажется, что одного этого должно быть достаточно, чтобы получить HTML-вывод с простым оглавлением (которое имеет только ссылку на раздел уязвимостей). Если кто-нибудь увидит, что я упустил, я буду благодарен за помощь.

Править

Я считаю, что проблема в том, что связано с тем, что мне нужно установить writerStandalone = True, но когда я это делаю, результирующий документ полностью пуст.

1 5

1 ответ:

Понял это. Вы должны включить автономный режим и установить шаблон:

loadReportPandocOpts :: IO WriterOptions                                                              
loadReportPandocOpts = do
  t <- readFile "resources/report-template.html"                                                      
  return def
    { writerTOCDepth = 4
    , writerTableOfContents = True                                                                    
    , writerHtml5 = True                                                                              
    , writerStandalone = True                                                                         
    , writerTemplate = t                                                                              
    }

И шаблон должен выглядеть примерно так:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <meta name="generator" content="pandoc" />
  </head>
  <body>
    <div>$toc$</div>
    <div>$body$</div>
  </body>
</html>