從Pandoc 檔案中的“一個簡單示例”開始,我想添加引文處理功能。Text.Pandoc.Citeproc 的檔案顯示了一個processCitations據稱處理引文的函式。然而,給定簡單的 org-mode 輸入和 citation [@test2022],它似乎不起作用。它編譯并運行得很好,但下面代碼的輸出是:<p><span target="url"><em>testing</em></span> [@test2022]</p>,即參考實際上并沒有被處理。我究竟做錯了什么?我怎樣才能得到它來處理我的引文?
import Text.Pandoc
import qualified Data.Text as T
import qualified Data.Text.IO as TIO
import Text.Pandoc.Filter
import Text.Pandoc.Citeproc
main :: IO ()
main = do
result <- runIO $ do
doc <- readOrg def (T.pack "# bibliography: test.bib\n [[url][testing]]\n[@test2022]")
processed <- processCitations doc
writeHtml5String def processed
html <- handleError result
TIO.putStrLn html
作為參考,這是我的test.bibbibtex 檔案:
@Book{test2022,
author = {Barus, Foobius},
title = {The Very Persistent Foo or Bar},
publisher = {Foobar Publications, Inc},
year = {2022}
}
uj5u.com熱心網友回復:
最終,我自己弄清楚了這一點。事實證明,您必須設定一些擴展名和一些選項,并為檔案設定元資料:
{-# LANGUAGE OverloadedStrings #-}
import Text.Pandoc
import qualified Data.Text as T
import qualified Data.Text.IO as TIO
import Text.Pandoc.Filter
import Text.Pandoc.Citeproc
import qualified Data.Map as M
import Text.Pandoc.Builder (setMeta)
main :: IO ()
main = do
let exts = extensionsFromList [ Ext_citations ]
let readerOptions = def{ readerExtensions = exts}
let writerOptions = def{ writerExtensions = exts}
result <- runIO $ do
doc <- readMarkdown readerOptions (T.pack "Testing testing\n[@test2022]\n")
let doc' = setMeta (T.pack "bibliography") (T.pack "test.bib") doc :: Pandoc
processed <- processCitations doc'
writeHtml5String writerOptions processed
html <- handleError result
TIO.putStrLn html
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/440937.html
