pandoc-crossref-0.3.22: Pandoc filter for cross-references
CopyrightCopyright (C) 2015 Nikolay Yakimov
LicenseGNU GPL, version 2 or above
MaintainerNikolay Yakimov <root@livid.pp.ru>
Stabilityalpha
Portabilityportable
Safe HaskellNone
LanguageGHC2021

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

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 #

Run an action in CrossRefM monad with argument, and return pure result.

This is the primary function to work with CrossRefM

runCrossRefIO :: Meta -> Maybe Format -> (a -> CrossRefM b) -> a -> IO b Source #

Run an action in CrossRefM monad with argument, and return IO result.

This function will attempt to read pandoc-crossref settings from settings file specified by crossrefYaml metadata field.

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 Source #

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.

Instances

Instances details
Applicative CrossRefM Source # 
Instance details

Defined in Text.Pandoc.CrossRef.Internal

Methods

pure :: a -> CrossRefM a #

(<*>) :: CrossRefM (a -> b) -> CrossRefM a -> CrossRefM b #

liftA2 :: (a -> b -> c) -> CrossRefM a -> CrossRefM b -> CrossRefM c #

(*>) :: CrossRefM a -> CrossRefM b -> CrossRefM b #

(<*) :: CrossRefM a -> CrossRefM b -> CrossRefM a #

Functor CrossRefM Source # 
Instance details

Defined in Text.Pandoc.CrossRef.Internal

Methods

fmap :: (a -> b) -> CrossRefM a -> CrossRefM b #

(<$) :: a -> CrossRefM b -> CrossRefM a #

Monad CrossRefM Source # 
Instance details

Defined in Text.Pandoc.CrossRef.Internal

Methods

(>>=) :: CrossRefM a -> (a -> CrossRefM b) -> CrossRefM b #

(>>) :: CrossRefM a -> CrossRefM b -> CrossRefM b #

return :: a -> CrossRefM a #

MonadReader Meta CrossRefM Source # 
Instance details

Defined in Text.Pandoc.CrossRef.Internal

Methods

ask :: CrossRefM Meta #

local :: (Meta -> Meta) -> CrossRefM a -> CrossRefM a #

reader :: (Meta -> a) -> CrossRefM a #

data CrossRefEnv Source #

Enviromnent for CrossRefM

Constructors

CrossRefEnv 

Fields