TEI improvements.
- Ensure that title element is always present, even if empty. - Put author tags in the template, rather than adding them in the writer. Closes #4839.
This commit is contained in:
parent
fe312b0a7a
commit
0910e92187
2 changed files with 2 additions and 17 deletions
|
@ -3,11 +3,9 @@
|
||||||
<teiHeader>
|
<teiHeader>
|
||||||
<fileDesc>
|
<fileDesc>
|
||||||
<titleStmt>
|
<titleStmt>
|
||||||
$if(title)$
|
|
||||||
<title>$title$</title>
|
<title>$title$</title>
|
||||||
$endif$
|
|
||||||
$for(author)$
|
$for(author)$
|
||||||
$author$
|
<author>$author$</author>
|
||||||
$endfor$
|
$endfor$
|
||||||
</titleStmt>
|
</titleStmt>
|
||||||
<publicationStmt>
|
<publicationStmt>
|
||||||
|
|
|
@ -35,7 +35,6 @@ import Prelude
|
||||||
import Data.Char (toLower)
|
import Data.Char (toLower)
|
||||||
import Data.List (isPrefixOf, stripPrefix)
|
import Data.List (isPrefixOf, stripPrefix)
|
||||||
import Data.Text (Text)
|
import Data.Text (Text)
|
||||||
import qualified Text.Pandoc.Builder as B
|
|
||||||
import Text.Pandoc.Class (PandocMonad, report)
|
import Text.Pandoc.Class (PandocMonad, report)
|
||||||
import Text.Pandoc.Definition
|
import Text.Pandoc.Definition
|
||||||
import Text.Pandoc.Highlighting (languages, languagesByExtension)
|
import Text.Pandoc.Highlighting (languages, languagesByExtension)
|
||||||
|
@ -48,16 +47,6 @@ import Text.Pandoc.Templates (renderTemplate')
|
||||||
import Text.Pandoc.Writers.Shared
|
import Text.Pandoc.Writers.Shared
|
||||||
import Text.Pandoc.XML
|
import Text.Pandoc.XML
|
||||||
|
|
||||||
-- | Convert list of authors to a docbook <author> section
|
|
||||||
authorToTEI :: PandocMonad m => WriterOptions -> [Inline] -> m B.Inlines
|
|
||||||
authorToTEI opts name' = do
|
|
||||||
name <- render Nothing <$> inlinesToTEI opts name'
|
|
||||||
let colwidth = if writerWrapText opts == WrapAuto
|
|
||||||
then Just $ writerColumns opts
|
|
||||||
else Nothing
|
|
||||||
return $ B.rawInline "tei" $ render colwidth $
|
|
||||||
inTagsSimple "author" (text $ escapeStringForXML name)
|
|
||||||
|
|
||||||
-- | Convert Pandoc document to string in Docbook format.
|
-- | Convert Pandoc document to string in Docbook format.
|
||||||
writeTEI :: PandocMonad m => WriterOptions -> Pandoc -> m Text
|
writeTEI :: PandocMonad m => WriterOptions -> Pandoc -> m Text
|
||||||
writeTEI opts (Pandoc meta blocks) = do
|
writeTEI opts (Pandoc meta blocks) = do
|
||||||
|
@ -72,13 +61,11 @@ writeTEI opts (Pandoc meta blocks) = do
|
||||||
TopLevelChapter -> 0
|
TopLevelChapter -> 0
|
||||||
TopLevelSection -> 1
|
TopLevelSection -> 1
|
||||||
TopLevelDefault -> 1
|
TopLevelDefault -> 1
|
||||||
auths' <- mapM (authorToTEI opts) $ docAuthors meta
|
|
||||||
let meta' = B.setMeta "author" auths' meta
|
|
||||||
metadata <- metaToJSON opts
|
metadata <- metaToJSON opts
|
||||||
(fmap (render' . vcat) .
|
(fmap (render' . vcat) .
|
||||||
mapM (elementToTEI opts startLvl) . hierarchicalize)
|
mapM (elementToTEI opts startLvl) . hierarchicalize)
|
||||||
(fmap render' . inlinesToTEI opts)
|
(fmap render' . inlinesToTEI opts)
|
||||||
meta'
|
meta
|
||||||
main <- (render' . vcat) <$> mapM (elementToTEI opts startLvl) elements
|
main <- (render' . vcat) <$> mapM (elementToTEI opts startLvl) elements
|
||||||
let context = defField "body" main
|
let context = defField "body" main
|
||||||
$
|
$
|
||||||
|
|
Loading…
Add table
Reference in a new issue