aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Text/Pandoc/Writers/LaTeX.hs27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs
index ff7e785e8..46ff4d3a9 100644
--- a/src/Text/Pandoc/Writers/LaTeX.hs
+++ b/src/Text/Pandoc/Writers/LaTeX.hs
@@ -51,7 +51,8 @@ import qualified Data.Text.Normalize as Normalize
data WriterState =
WriterState { stInNote :: Bool -- true if we're in a note
, stInQuote :: Bool -- true if in a blockquote
- , stInMinipage :: Bool -- true if in minipage
+ , stExternalNotes :: Bool -- true if in context where
+ -- we need to store footnotes
, stInHeading :: Bool -- true if in a section heading
, stInItem :: Bool -- true if in \item[..]
, stNotes :: [Doc] -- notes in a minipage
@@ -76,7 +77,7 @@ startingState :: WriterOptions -> WriterState
startingState options = WriterState {
stInNote = False
, stInQuote = False
- , stInMinipage = False
+ , stExternalNotes = False
, stInHeading = False
, stInItem = False
, stNotes = []
@@ -606,7 +607,7 @@ blockToLaTeX (Para [Image attr@(ident, _, _) txt (src,'f':'i':'g':':':tit)]) = d
"\\centering" $$ img $$ caption <> cr
let figure = cr <> "\\begin{figure}" $$ innards $$ "\\end{figure}"
st <- get
- return $ if stInNote st || stInMinipage st
+ return $ if stExternalNotes st
-- can't have figures in notes or minipage (here, table cell)
-- http://www.tex.ac.uk/FAQ-ouparmd.html
then "\\begin{center}" $$ img $+$ capt $$ "\\end{center}"
@@ -826,11 +827,11 @@ blockToLaTeX (Table caption aligns widths heads rows) = do
getCaption :: PandocMonad m => Bool -> [Inline] -> LW m (Doc, Doc, Doc)
getCaption externalNotes txt = do
- oldIsMinipage <- gets stInMinipage
- modify $ \st -> st{ stInMinipage = externalNotes, stNotes = [] }
+ oldExternalNotes <- gets stExternalNotes
+ modify $ \st -> st{ stExternalNotes = externalNotes, stNotes = [] }
capt <- inlineListToLaTeX txt
notes <- gets stNotes
- modify $ \st -> st{ stInMinipage = oldIsMinipage, stNotes = [] }
+ modify $ \st -> st{ stExternalNotes = oldExternalNotes, stNotes = [] }
-- We can't have footnotes in the list of figures/tables, so remove them:
captForLof <- if null notes
then return empty
@@ -904,12 +905,12 @@ tableCellToLaTeX _ (0, _, blocks) =
blockListToLaTeX $ walk fixLineBreaks $ walk displayMathToInline blocks
tableCellToLaTeX header (width, align, blocks) = do
beamer <- gets stBeamer
- oldInMinipage <- gets stInMinipage
+ externalNotes <- gets stExternalNotes
-- See #5367 -- footnotehyper/footnote don't work in beamer,
-- so we need to produce the notes outside the table...
- modify $ \st -> st{ stInMinipage = beamer }
+ modify $ \st -> st{ stExternalNotes = beamer }
cellContents <- blockListToLaTeX blocks
- modify $ \st -> st{ stInMinipage = oldInMinipage }
+ modify $ \st -> st{ stExternalNotes = externalNotes }
let valign = text $ if header then "[b]" else "[t]"
let halign = case align of
AlignLeft -> "\\raggedright"
@@ -1286,10 +1287,10 @@ inlineToLaTeX (Image attr _ (source, _)) = do
dims <> braces (text source'')
inlineToLaTeX (Note contents) = do
setEmptyLine False
- inMinipage <- gets stInMinipage
- modify (\s -> s{stInNote = True})
+ externalNotes <- gets stExternalNotes
+ modify (\s -> s{stInNote = True, stExternalNotes = True})
contents' <- blockListToLaTeX contents
- modify (\s -> s {stInNote = False})
+ modify (\s -> s {stInNote = False, stExternalNotes = externalNotes})
let optnl = case reverse contents of
(CodeBlock _ _ : _) -> cr
_ -> empty
@@ -1301,7 +1302,7 @@ inlineToLaTeX (Note contents) = do
else empty
modify $ \st -> st{ stNotes = noteContents : stNotes st }
return $
- if inMinipage
+ if externalNotes
then "\\footnotemark{}"
-- note: a \n before } needed when note ends with a Verbatim environment
else "\\footnote" <> beamerMark <> braces noteContents