| Copyright | Copyright (C) 2015 Nikolay Yakimov |
|---|---|
| License | GNU GPL, version 2 or above |
| Maintainer | Nikolay Yakimov <root@livid.pp.ru> |
| Stability | alpha |
| Portability | portable |
| Safe Haskell | None |
| Language | GHC2021 |
Text.Pandoc.CrossRef
Description
Public interface to pandoc-crossref library
Example of use:
import Text.Pandoc import Text.Pandoc.JSON import Text.Pandoc.CrossRef main :: IO () main = toJSONFilter go where go fmt p@(Pandoc meta _) = runCrossRefIO meta fmt action p where action (Pandoc _ bs) = do bs' <- crossRefBlocks bs meta' <- crossRefMeta return $ Pandoc meta' bs'
This module also exports utility functions for setting up meta-settings for pandoc-crossref. Refer to documentation for a complete list of metadata field names. All functions accept a single argument of type, returned by Text.Pandoc.Builder functions, and return Meta.
Example:
runCrossRefIO meta fmt crossRefBlocks blocks where meta = figureTitle (str "Figura") <> tableTitle (str "Tabla") <> figPrefix (str "fig.") <> eqnPrefix (str "ec.") <> tblPrefix (str "tbl.") <> loftitle (header 1 $ text "Lista de figuras") <> lotTitle (header 1 $ text "Lista de tablas") <> chaptersDepth (MetaString "2")
Synopsis
- crossRefBlocks :: [Block] -> CrossRefM [Block]
- crossRefMeta :: CrossRefM Meta
- defaultCrossRefAction :: Pandoc -> CrossRefM Pandoc
- runCrossRef :: Meta -> Maybe Format -> (a -> CrossRefM b) -> a -> b
- runCrossRefIO :: Meta -> Maybe Format -> (a -> CrossRefM b) -> a -> IO b
- autoEqnLabels :: ToMetaValue a => a -> Meta
- autoSectionLabels :: ToMetaValue a => a -> Meta
- ccsDelim :: ToMetaValue a => a -> Meta
- ccsLabelSep :: ToMetaValue a => a -> Meta
- ccsTemplate :: ToMetaValue a => a -> Meta
- chapDelim :: ToMetaValue a => a -> Meta
- chaptersDepth :: ToMetaValue a => a -> Meta
- codeBlockCaptions :: ToMetaValue a => a -> Meta
- cref :: ToMetaValue a => a -> Meta
- customHeadingLabel :: ToMetaValue a => a -> Meta
- customLabel :: ToMetaValue a => a -> Meta
- eqnBlockInlineMath :: ToMetaValue a => a -> Meta
- eqnBlockTemplate :: ToMetaValue a => a -> Meta
- eqnDisplayTemplate :: ToMetaValue a => a -> Meta
- eqnIndexTemplate :: ToMetaValue a => a -> Meta
- eqnInlineTableTemplate :: ToMetaValue a => a -> Meta
- eqnInlineTemplate :: ToMetaValue a => a -> Meta
- eqnPrefix :: ToMetaValue a => a -> Meta
- eqnPrefixTemplate :: ToMetaValue a => a -> Meta
- equationNumberTeX :: ToMetaValue a => a -> Meta
- figPrefix :: ToMetaValue a => a -> Meta
- figPrefixTemplate :: ToMetaValue a => a -> Meta
- figureTemplate :: ToMetaValue a => a -> Meta
- lastDelim :: ToMetaValue a => a -> Meta
- linkReferences :: ToMetaValue a => a -> Meta
- listOfMetadata :: ToMetaValue a => a -> Meta
- listingTemplate :: ToMetaValue a => a -> Meta
- listings :: ToMetaValue a => a -> Meta
- lofItemTemplate :: ToMetaValue a => a -> Meta
- lofTitle :: ToMetaValue a => a -> Meta
- lolItemTemplate :: ToMetaValue a => a -> Meta
- lolTitle :: ToMetaValue a => a -> Meta
- lotItemTemplate :: ToMetaValue a => a -> Meta
- lotTitle :: ToMetaValue a => a -> Meta
- lstPrefix :: ToMetaValue a => a -> Meta
- lstPrefixTemplate :: ToMetaValue a => a -> Meta
- nameInLink :: ToMetaValue a => a -> Meta
- numberSections :: ToMetaValue a => a -> Meta
- outFormat :: ToMetaValue a => a -> Meta
- pairDelim :: ToMetaValue a => a -> Meta
- rangeDelim :: ToMetaValue a => a -> Meta
- refDelim :: ToMetaValue a => a -> Meta
- refIndexTemplate :: ToMetaValue a => a -> Meta
- secHeaderTemplate :: ToMetaValue a => a -> Meta
- secPrefix :: ToMetaValue a => a -> Meta
- secPrefixTemplate :: ToMetaValue a => a -> Meta
- sectionsDepth :: ToMetaValue a => a -> Meta
- setLabelAttribute :: ToMetaValue a => a -> Meta
- subfigColumns :: ToMetaValue a => a -> Meta
- subfigGrid :: ToMetaValue a => a -> Meta
- subfigureChildTemplate :: ToMetaValue a => a -> Meta
- subfigureRefIndexTemplate :: ToMetaValue a => a -> Meta
- subfigureTemplate :: ToMetaValue a => a -> Meta
- tableEqns :: ToMetaValue a => a -> Meta
- tableTemplate :: ToMetaValue a => a -> Meta
- tblPrefix :: ToMetaValue a => a -> Meta
- tblPrefixTemplate :: ToMetaValue a => a -> Meta
- getOptions :: Meta -> Maybe Format -> Options
- chapters :: ToMetaValue a => a -> Meta
- crossrefYaml :: ToMetaValue a => a -> Meta
- eqLabels :: ToMetaValue a => a -> Meta
- figLabels :: ToMetaValue a => a -> Meta
- figureTitle :: ToMetaValue a => a -> Meta
- listItemTitleDelim :: ToMetaValue a => a -> Meta
- listingTitle :: ToMetaValue a => a -> Meta
- lofItemTitle :: ToMetaValue a => a -> Meta
- lolItemTitle :: ToMetaValue a => a -> Meta
- lotItemTitle :: ToMetaValue a => a -> Meta
- lstLabels :: ToMetaValue a => a -> Meta
- secHeaderDelim :: ToMetaValue a => a -> Meta
- secLabels :: ToMetaValue a => a -> Meta
- subfigLabels :: ToMetaValue a => a -> Meta
- tableTitle :: ToMetaValue a => a -> Meta
- tblLabels :: ToMetaValue a => a -> Meta
- titleDelim :: ToMetaValue a => a -> Meta
- defaultMeta :: Meta
- data CrossRefM a
- data CrossRefEnv = CrossRefEnv {
- creSettings :: Meta
- creOptions :: Options
- creReferences :: References
Documentation
crossRefBlocks :: [Block] -> CrossRefM [Block] Source #
Walk over blocks, while inserting cross-references, list-of, etc.
Works in CrossRefM monad.
crossRefMeta :: CrossRefM Meta Source #
Modifies metadata, adding header-includes instructions to setup custom and builtin environments, plus list-of-x metadata fields if listOfMetadata is enabled.
Works in CrossRefM monad.
defaultCrossRefAction :: Pandoc -> CrossRefM Pandoc Source #
Combines crossRefMeta and crossRefBlocks
Works in CrossRefM monad.
runCrossRef :: Meta -> Maybe Format -> (a -> CrossRefM b) -> a -> b Source #
autoEqnLabels :: ToMetaValue a => a -> Meta #
autoSectionLabels :: ToMetaValue a => a -> Meta #
ccsLabelSep :: ToMetaValue a => a -> Meta #
ccsTemplate :: ToMetaValue a => a -> Meta #
chaptersDepth :: ToMetaValue a => a -> Meta #
codeBlockCaptions :: ToMetaValue a => a -> Meta #
customHeadingLabel :: ToMetaValue a => a -> Meta #
customLabel :: ToMetaValue a => a -> Meta #
eqnBlockInlineMath :: ToMetaValue a => a -> Meta #
eqnBlockTemplate :: ToMetaValue a => a -> Meta #
eqnDisplayTemplate :: ToMetaValue a => a -> Meta #
eqnIndexTemplate :: ToMetaValue a => a -> Meta #
eqnInlineTableTemplate :: ToMetaValue a => a -> Meta #
eqnInlineTemplate :: ToMetaValue a => a -> Meta #
eqnPrefixTemplate :: ToMetaValue a => a -> Meta #
equationNumberTeX :: ToMetaValue a => a -> Meta #
figPrefixTemplate :: ToMetaValue a => a -> Meta #
figureTemplate :: ToMetaValue a => a -> Meta #
linkReferences :: ToMetaValue a => a -> Meta #
listOfMetadata :: ToMetaValue a => a -> Meta #
listingTemplate :: ToMetaValue a => a -> Meta #
lofItemTemplate :: ToMetaValue a => a -> Meta #
lolItemTemplate :: ToMetaValue a => a -> Meta #
lotItemTemplate :: ToMetaValue a => a -> Meta #
lstPrefixTemplate :: ToMetaValue a => a -> Meta #
nameInLink :: ToMetaValue a => a -> Meta #
numberSections :: ToMetaValue a => a -> Meta #
rangeDelim :: ToMetaValue a => a -> Meta #
refIndexTemplate :: ToMetaValue a => a -> Meta #
secHeaderTemplate :: ToMetaValue a => a -> Meta #
secPrefixTemplate :: ToMetaValue a => a -> Meta #
sectionsDepth :: ToMetaValue a => a -> Meta #
setLabelAttribute :: ToMetaValue a => a -> Meta #
subfigColumns :: ToMetaValue a => a -> Meta #
subfigGrid :: ToMetaValue a => a -> Meta #
subfigureChildTemplate :: ToMetaValue a => a -> Meta #
subfigureRefIndexTemplate :: ToMetaValue a => a -> Meta #
subfigureTemplate :: ToMetaValue a => a -> Meta #
tableTemplate :: ToMetaValue a => a -> Meta #
tblPrefixTemplate :: ToMetaValue a => a -> Meta #
getOptions :: Meta -> Maybe Format -> Options #
crossrefYaml :: ToMetaValue a => a -> Meta #
figureTitle :: ToMetaValue a => a -> Meta #
listItemTitleDelim :: ToMetaValue a => a -> Meta #
listingTitle :: ToMetaValue a => a -> Meta #
lofItemTitle :: ToMetaValue a => a -> Meta #
lolItemTitle :: ToMetaValue a => a -> Meta #
lotItemTitle :: ToMetaValue a => a -> Meta #
secHeaderDelim :: ToMetaValue a => a -> Meta #
subfigLabels :: ToMetaValue a => a -> Meta #
tableTitle :: ToMetaValue a => a -> Meta #
titleDelim :: ToMetaValue a => a -> Meta #
defaultMeta :: Meta #
Bit of a weird self-recursive State monad (not MonadFix). The inner reader (function) monad takes the final state (or part of it anyway) as its input. This is all carefully choreographed to lazily converge to a fixpoint, but it is also feasible to evaluate this in two passes instead.
data CrossRefEnv Source #
Enviromnent for CrossRefM
Constructors
| CrossRefEnv | |
Fields
| |