aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Lööw <AndreasLoow@users.noreply.github.com>2015-10-17 22:58:09 +0200
committerAndreas Lööw <AndreasLoow@users.noreply.github.com>2015-10-17 23:04:15 +0200
commitf0c47907ca1d7ee9600a574c3e007640c7700d7d (patch)
tree9a3b6032b74e1281df61af26d2074f583621acfb
parente08399a16b9604c1c7eb92ca9cfc8213d73892eb (diff)
downloadpandoc-f0c47907ca1d7ee9600a574c3e007640c7700d7d.tar.gz
Consider header files when determining whether to use csquotes.
-rw-r--r--README13
-rw-r--r--src/Text/Pandoc/Writers/LaTeX.hs9
2 files changed, 14 insertions, 8 deletions
diff --git a/README b/README
index f10de123c..df6798618 100644
--- a/README
+++ b/README
@@ -184,10 +184,10 @@ document contains images), [`color`], [`hyperref`], [`ulem`],
[`mathspec`], [`polyglossia`] (with `lang`), [`xecjk`], and
[`bidi`] (with the `dir` variable set). The [`upquote`] and
[`microtype`] packages are used if available, and [`csquotes`] will
-be used for [smart punctuation] if added to the template. The
-[`natbib`], [`biblatex`], [`bibtex`], and [`biber`] packages can
-optionally be used for [citation rendering]. These are included with
-all recent versions of [TeX Live].
+be used for [smart punctuation] if added to the template or included in
+any header file. The [`natbib`], [`biblatex`], [`bibtex`], and [`biber`]
+packages can optionally be used for [citation rendering]. These are
+included with all recent versions of [TeX Live].
PDF output can be controlled using [variables for LaTeX].
@@ -2377,8 +2377,9 @@ correct output, converting straight quotes to curly quotes, `---` to
em-dashes, `--` to en-dashes, and `...` to ellipses. Nonbreaking spaces
are inserted after certain abbreviations, such as "Mr."
-Note: if your LaTeX template calls for the [`csquotes`] package, pandoc will
-detect this automatically and use `\enquote{...}` for quoted text.
+Note: if your LaTeX template or any included header file call for the
+[`csquotes`] package, pandoc will detect this automatically and use
+`\enquote{...}` for quoted text.
Inline formatting
-----------------
diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs
index 770a674b7..15982736c 100644
--- a/src/Text/Pandoc/Writers/LaTeX.hs
+++ b/src/Text/Pandoc/Writers/LaTeX.hs
@@ -38,7 +38,7 @@ import Text.Pandoc.Options
import Text.Pandoc.Templates
import Text.Printf ( printf )
import Network.URI ( isURI, unEscapeString )
-import Data.Aeson (object, (.=))
+import Data.Aeson ( object, (.=), FromJSON )
import Data.List ( (\\), isInfixOf, stripPrefix, intercalate, intersperse )
import Data.Char ( toLower, isPunctuation, isAscii, isLetter, isDigit, ord )
import Data.Maybe ( fromMaybe )
@@ -129,7 +129,12 @@ pandocToLaTeX options (Pandoc meta blocks) = do
| otherwise -> return ()
-- check for \usepackage...{csquotes}; if present, we'll use
-- \enquote{...} for smart quotes:
- when ("{csquotes}" `isInfixOf` template) $
+ let headerIncludesField :: FromJSON a => Maybe a
+ headerIncludesField = getField "header-includes" metadata
+ let headerIncludes = fromMaybe [] $ mplus
+ (fmap return headerIncludesField)
+ headerIncludesField
+ when (any (isInfixOf "{csquotes}") (template : headerIncludes)) $
modify $ \s -> s{stCsquotes = True}
let (blocks'', lastHeader) = if writerCiteMethod options == Citeproc then
(blocks', [])