module Text.LaTeX.LambdaTeX.Reference.Internal where
import qualified Data.Set as S
import qualified Data.Text as T
import Text.LaTeX.LambdaTeX.Reference.Types
import Text.LaTeX.LambdaTeX.Types
addLabelMade :: Monad m => Text -> ΛTeXT m ()
addLabelMade label = λtell $ mempty {outputLabelsMade = S.singleton label}
addLabelNeeded :: Monad m => Text -> ΛTeXT m ()
addLabelNeeded label = λtell $ mempty {outputLabelsNeeded = S.singleton label}
renderReferences :: [Reference] -> Text
renderReferences rs =
(`mappend` "\n\n") . T.intercalate ",\n\n" $ map showRef rs
where
showRef :: Reference -> Text
showRef r =
mconcat
[ "@"
, referenceType r
, "{"
, referenceName r
, ",\n"
, T.intercalate ",\n" (map showField $ referenceFields r)
, "\n}"
]
showField :: (Text, Text) -> Text
showField (a, b) = mconcat [" ", a, " = {", b, "}"]
addReference :: Monad m => Reference -> ΛTeXT m ()
addReference ref = λtell $ mempty {outputExternalReferences = S.singleton ref}