{-# LANGUAGE LambdaCase        #-}
{-# LANGUAGE OverloadedStrings #-}
{- |
   Module      : Text.Pandoc.Writers.LaTeX.Notes
   Copyright   : Copyright (C) 2006-2023 John MacFarlane
   License     : GNU GPL, version 2 or above

   Maintainer  : John MacFarlane <jgm@berkeley.edu>
   Stability   : alpha
   Portability : portable

Output tables as LaTeX.
-}
module Text.Pandoc.Writers.LaTeX.Notes
  ( notesToLaTeX
  ) where

import Data.List (intersperse)
import Text.DocLayout ( Doc, braces, empty, text, vcat, ($$))
import Data.Text (Text)

notesToLaTeX :: [Doc Text] -> Doc Text
notesToLaTeX :: [Doc Text] -> Doc Text
notesToLaTeX = \case
  [] -> forall a. Doc a
empty
  [Doc Text]
ns -> (case forall (t :: * -> *) a. Foldable t => t a -> Int
length [Doc Text]
ns of
            Int
n | Int
n forall a. Ord a => a -> a -> Bool
> Int
1 -> Doc Text
"\\addtocounter" forall a. Semigroup a => a -> a -> a
<>
                         forall a. HasChars a => Doc a -> Doc a
braces Doc Text
"footnote" forall a. Semigroup a => a -> a -> a
<>
                         forall a. HasChars a => Doc a -> Doc a
braces (forall a. HasChars a => String -> Doc a
text forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show forall a b. (a -> b) -> a -> b
$ Int
1 forall a. Num a => a -> a -> a
- Int
n)
              | Bool
otherwise -> forall a. Doc a
empty)
        forall a. Doc a -> Doc a -> Doc a
$$
        forall a. [Doc a] -> Doc a
vcat (forall a. a -> [a] -> [a]
intersperse
               (Doc Text
"\\addtocounter" forall a. Semigroup a => a -> a -> a
<> forall a. HasChars a => Doc a -> Doc a
braces Doc Text
"footnote" forall a. Semigroup a => a -> a -> a
<> forall a. HasChars a => Doc a -> Doc a
braces Doc Text
"1")
               forall a b. (a -> b) -> a -> b
$ forall a b. (a -> b) -> [a] -> [b]
map (\Doc Text
x -> Doc Text
"\\footnotetext" forall a. Semigroup a => a -> a -> a
<> forall a. HasChars a => Doc a -> Doc a
braces Doc Text
x)
               forall a b. (a -> b) -> a -> b
$ forall a. [a] -> [a]
reverse [Doc Text]
ns)