diff options
-rw-r--r-- | .travis.yml | 1 | ||||
-rw-r--r-- | README | 105 | ||||
-rw-r--r-- | data/default.csl | 458 | ||||
-rwxr-xr-x | make_osx_package.sh | 1 | ||||
-rw-r--r-- | pandoc.cabal | 17 | ||||
-rw-r--r-- | pandoc.hs | 80 | ||||
-rw-r--r-- | src/Text/Pandoc/Biblio.hs | 216 | ||||
-rw-r--r-- | src/Text/Pandoc/Options.hs | 7 | ||||
-rw-r--r-- | src/Text/Pandoc/Readers/LaTeX.hs | 8 | ||||
-rw-r--r-- | src/Text/Pandoc/Readers/Markdown.hs | 5 | ||||
-rw-r--r-- | src/Text/Pandoc/Readers/TeXMath.hs | 84 | ||||
-rw-r--r-- | src/Text/Pandoc/Writers/LaTeX.hs | 16 | ||||
-rw-r--r-- | tests/Tests/Old.hs | 18 | ||||
-rw-r--r-- | tests/Tests/Readers/LaTeX.hs | 7 | ||||
-rw-r--r-- | tests/Tests/Writers/LaTeX.hs | 7 | ||||
-rw-r--r-- | tests/biblio.bib | 26 | ||||
-rw-r--r-- | tests/chicago-author-date.csl | 458 | ||||
-rw-r--r-- | tests/ieee.csl | 302 | ||||
-rw-r--r-- | tests/markdown-citations.chicago-author-date.txt | 51 | ||||
-rw-r--r-- | tests/markdown-citations.ieee.txt | 51 | ||||
-rw-r--r-- | tests/markdown-citations.mhra.txt | 73 | ||||
-rw-r--r-- | tests/markdown-citations.native | 17 | ||||
-rw-r--r-- | tests/mhra.csl | 399 | ||||
-rw-r--r-- | windows/make-windows-installer.bat | 1 |
24 files changed, 103 insertions, 2305 deletions
diff --git a/.travis.yml b/.travis.yml index 1216994db..487e3cb98 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,6 @@ language: haskell before_install: - cabal install cabal-dev - 'git clone https://github.com/jgm/pandoc-types && cabal-dev add-source pandoc-types' - - 'git clone https://github.com/jgm/citeproc-hs && cabal-dev add-source citeproc-hs' install: - cabal-dev install-deps --enable-tests script: @@ -598,54 +598,6 @@ Options affecting specific writers Citation rendering ------------------ -`--bibliography=`*FILE* -: Specify bibliography database to be used in resolving - citations. The database type will be determined from the - extension of *FILE*, which may be `.mods` (MODS format), - `.bib` (BibLaTeX format, which will normally work for BibTeX - files as well), `.bibtex` (BibTeX format), - `.ris` (RIS format), `.enl` (EndNote format), - `.xml` (EndNote XML format), `.wos` (ISI format), - `.medline` (MEDLINE format), `.copac` (Copac format), - or `.json` (citeproc JSON). If you want to use multiple - bibliographies, just use this option repeatedly. - -`--csl=`*FILE* -: Specify [CSL] style to be used in formatting citations and - the bibliography. If *FILE* is not found, pandoc will look - for it in - - $HOME/.csl - - in unix, - - C:\Documents And Settings\USERNAME\Application Data\csl - - in Windows XP, and - - C:\Users\USERNAME\AppData\Roaming\csl - - in Windows 7. If the `--csl` option is not specified, pandoc - will use a default style: either `default.csl` in the - user data directory (see `--data-dir`), or, if that is - not present, the Chicago author-date style. - -`--citation-abbreviations=`*FILE* -: Specify a file containing abbreviations for journal titles and - other bibliographic fields (indicated by setting `form="short"` - in the CSL node for the field). The format is described at - <http://citationstylist.org/2011/10/19/abbreviations-for-zotero-test-release/>. - Here is a short example: - - { "default": { - "container-title": { - "Lloyd's Law Reports": "Lloyd's Rep", - "Estates Gazette": "EG", - "Scots Law Times": "SLT" - } - } - } - `--natbib` : Use natbib for citations in LaTeX output. @@ -2378,9 +2330,14 @@ Citations **Extension: `citations`** -Pandoc can automatically generate citations and a bibliography in a number of -styles (using Andrea Rossato's `hs-citeproc`). In order to use this feature, -you will need a bibliographic database in one of the following formats: +Using an external filter, `pandoc-citeproc`, pandoc can automatically generate +citations and a bibliography in a number of styles. Basic usage is + + pandoc --filter pandoc-citeproc myinput.txt + +In order to use this feature, you will need to specify a bibliography file +using the `bibliography` metadata field in a YAML metadata section. +The bibliography may have any of these formats: Format File extension ------------ -------------- @@ -2398,18 +2355,40 @@ you will need a bibliographic database in one of the following formats: Note that `.bib` can generally be used with both BibTeX and BibLaTeX files, but you can use `.bibtex` to force BibTeX. -You will need to specify the bibliography file using the `--bibliography` -command-line option (which may be repeated if you have several -bibliographies). - -By default, pandoc will use a Chicago author-date format for citations -and references. To use another style, you will need to use the -`--csl` option to specify a [CSL] 1.0 style file. A primer on -creating and modifying CSL styles can be found at -<http://citationstyles.org/downloads/primer.html>. -A repository of CSL styles can be found at -<https://github.com/citation-style-language/styles>. -See also <http://zotero.org/styles> for easy browsing. +Alternatively you can use a `references` field in the document's YAML +metadata. This should include an array of YAML-encoded references, +for example: + + --- + references: + - id: fenner2012a + title: One-click science marketing + author: + - family: Fenner + given: Martin + container-title: Nature Materials + volume: 11 + URL: 'http://dx.doi.org/10.1038/nmat3283' + DOI: 10.1038/nmat3283 + issue: 4 + publisher: Nature Publishing Group + page: 261-263 + type: article-journal + issued: + year: 2012 + month: 3 + ... + +(The program `mods2yaml`, which comes with `pandoc-citeproc`, can help produce +these from a MODS reference collection.) + +By default, `pandoc-citeproc` will use a Chicago author-date format for +citations and references. To use another style, you will need to specify +a [CSL] 1.0 style file in the `csl` metadata field. A primer on creating and +modifying CSL styles can be found at +<http://citationstyles.org/downloads/primer.html>. A repository of CSL styles +can be found at <https://github.com/citation-style-language/styles>. See also +<http://zotero.org/styles> for easy browsing. Citations go inside square brackets and are separated by semicolons. Each citation must have a key, composed of '@' + the citation diff --git a/data/default.csl b/data/default.csl deleted file mode 100644 index 83a70d0b5..000000000 --- a/data/default.csl +++ /dev/null @@ -1,458 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="never"> - <info> - <title>Chicago Manual of Style (author-date)</title> - <id>http://www.zotero.org/styles/chicago-author-date</id> - <link href="http://www.zotero.org/styles/chicago-author-date" rel="self"/> - <link href="http://www.chicagomanualofstyle.org/tools_citationguide.html" rel="documentation"/> - <author> - <name>Julian Onions</name> - <email>julian.onions@gmail.com</email> - </author> - <contributor> - <name>Sebastian Karcher</name> - </contributor> - <contributor> - <name>Richard Karnesky</name> - <email>karnesky+zotero@gmail.com</email> - <uri>http://arc.nucapt.northwestern.edu/Richard_Karnesky</uri> - </contributor> - <category citation-format="author-date"/> - <category field="generic-base"/> - <summary>The author-date variant of the Chicago style</summary> - <updated>2013-03-28T05:37:10+00:00</updated> - <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights> - </info> - <locale> - <terms> - <term name="editor" form="verb-short">ed.</term> - <term name="container-author" form="verb">by</term> - <term name="translator" form="verb-short">trans.</term> - <term name="translator" form="short">trans.</term> - </terms> - </locale> - <macro name="secondary-contributors"> - <choose> - <if type="chapter paper-conference" match="none"> - <group delimiter=". "> - <names variable="editor translator"> - <label form="verb" text-case="capitalize-first" suffix=" " plural="never"/> - <name and="text" delimiter=", "/> - </names> - </group> - </if> - </choose> - </macro> - <macro name="container-contributors"> - <choose> - <if type="chapter paper-conference" match="any"> - <group prefix=", " delimiter=", "> - <names variable="container-author editor" delimiter=", "> - <label form="verb" suffix=" " plural="never"/> - <name and="text" delimiter=", "/> - </names> - </group> - </if> - </choose> - </macro> - <macro name="editor"> - <names variable="editor"> - <name name-as-sort-order="first" and="text" sort-separator=", " delimiter=", " delimiter-precedes-last="always"/> - <label form="short" prefix=", "/> - </names> - </macro> - <macro name="translator"> - <names variable="translator"> - <name name-as-sort-order="first" and="text" sort-separator=", " delimiter=", " delimiter-precedes-last="always"/> - <label form="short" prefix=", " plural="never"/> - </names> - </macro> - <macro name="recipient"> - <choose> - <if type="personal_communication"> - <choose> - <if variable="genre"> - <text variable="genre" text-case="capitalize-first"/> - </if> - <else> - <text term="letter" text-case="capitalize-first"/> - </else> - </choose> - </if> - </choose> - <names variable="recipient" delimiter=", "> - <label form="verb" prefix=" " text-case="lowercase" suffix=" "/> - <name and="text" delimiter=", "/> - </names> - </macro> - <macro name="contributors"> - <names variable="author"> - <name and="text" name-as-sort-order="first" sort-separator=", " delimiter=", " delimiter-precedes-last="always"/> - <label form="short" plural="never" prefix=", "/> - <substitute> - <names variable="editor"/> - <names variable="translator"/> - <text macro="title"/> - </substitute> - </names> - <text macro="recipient"/> - </macro> - <macro name="contributors-short"> - <names variable="author"> - <name form="short" and="text" delimiter=", " initialize-with=". "/> - <substitute> - <names variable="editor"/> - <names variable="translator"/> - <text macro="title"/> - </substitute> - </names> - </macro> - <macro name="interviewer"> - <names variable="interviewer" delimiter=", "> - <label form="verb" prefix=" " text-case="capitalize-first" suffix=" "/> - <name and="text" delimiter=", "/> - </names> - </macro> - <macro name="archive"> - <group delimiter=". "> - <text variable="archive_location" text-case="capitalize-first"/> - <text variable="archive"/> - <text variable="archive-place"/> - </group> - </macro> - <macro name="access"> - <group delimiter=". "> - <choose> - <if type="graphic report" match="any"> - <text macro="archive"/> - </if> - <else-if type="article-magazine article-newspaper bill book chapter graphic legal_case legislation motion_picture paper-conference report song thesis" match="none"> - <text macro="archive"/> - </else-if> - </choose> - <text variable="DOI" prefix="doi:"/> - <choose> - <if variable="DOI issued" match="none"> - <choose> - <if variable="URL accessed" match="all"> - <group delimiter=" "> - <text term="accessed" text-case="capitalize-first"/> - <date variable="accessed" delimiter=" "> - <date-part name="month"/> - <date-part name="day"/> - </date> - </group> - </if> - </choose> - </if> - <else-if type="webpage"> - <date variable="issued" delimiter=" "> - <date-part name="month"/> - <date-part name="day"/> - </date> - </else-if> - </choose> - <choose> - <if type="legal_case" match="none"> - <text variable="URL"/> - </if> - </choose> - </group> - </macro> - <macro name="title"> - <choose> - <if variable="title" match="none"> - <choose> - <if type="personal_communication" match="none"> - <text variable="genre" text-case="capitalize-first"/> - </if> - </choose> - </if> - <else-if type="bill book graphic legal_case legislation motion_picture song" match="any"> - <text variable="title" text-case="title" font-style="italic"/> - </else-if> - <else> - <text variable="title" text-case="title" quotes="true"/> - </else> - </choose> - </macro> - <macro name="edition"> - <choose> - <if type="bill book graphic legal_case legislation motion_picture report song" match="any"> - <choose> - <if is-numeric="edition"> - <group delimiter=" " prefix=". "> - <number variable="edition" form="ordinal"/> - <text term="edition" form="short" strip-periods="true"/> - </group> - </if> - <else> - <text variable="edition" prefix=". "/> - </else> - </choose> - </if> - <else-if type="chapter paper-conference" match="any"> - <choose> - <if is-numeric="edition"> - <group delimiter=" " prefix=", "> - <number variable="edition" form="ordinal"/> - <text term="edition" form="short"/> - </group> - </if> - <else> - <text variable="edition" prefix=", "/> - </else> - </choose> - </else-if> - </choose> - </macro> - <macro name="locators"> - <choose> - <if type="article-journal"> - <text variable="volume" prefix=" "/> - <text variable="issue" prefix=" (" suffix=")"/> - </if> - <else-if type="legal_case"> - <text variable="volume" prefix=", "/> - <text variable="container-title" prefix=" "/> - <text variable="page" prefix=" "/> - </else-if> - <else-if type="bill book graphic legal_case legislation motion_picture report song" match="any"> - <group prefix=". " delimiter=". "> - <group> - <text term="volume" form="short" text-case="capitalize-first" suffix=" "/> - <number variable="volume" form="numeric"/> - </group> - <group> - <number variable="number-of-volumes" form="numeric"/> - <text term="volume" form="short" prefix=" " plural="true"/> - </group> - </group> - </else-if> - <else-if type="chapter paper-conference" match="any"> - <choose> - <if variable="page" match="none"> - <group prefix=". "> - <text term="volume" form="short" text-case="capitalize-first" suffix=" "/> - <number variable="volume" form="numeric"/> - </group> - </if> - </choose> - </else-if> - </choose> - </macro> - <macro name="locators-chapter"> - <choose> - <if type="chapter paper-conference" match="any"> - <choose> - <if variable="page"> - <group prefix=", "> - <text variable="volume" suffix=":"/> - <text variable="page"/> - </group> - </if> - </choose> - </if> - </choose> - </macro> - <macro name="locators-article"> - <choose> - <if type="article-newspaper"> - <group prefix=", " delimiter=", "> - <group> - <text variable="edition" suffix=" "/> - <text term="edition" prefix=" "/> - </group> - <group> - <text term="section" form="short" suffix=" "/> - <text variable="section"/> - </group> - </group> - </if> - <else-if type="article-journal"> - <text variable="page" prefix=": "/> - </else-if> - </choose> - </macro> - <macro name="point-locators"> - <choose> - <if variable="locator"> - <choose> - <if locator="page" match="none"> - <choose> - <if type="bill book graphic legal_case legislation motion_picture report song" match="any"> - <choose> - <if variable="volume"> - <group> - <text term="volume" form="short" suffix=" "/> - <number variable="volume" form="numeric"/> - <label variable="locator" form="short" prefix=", " suffix=" "/> - </group> - </if> - <else> - <label variable="locator" form="short" suffix=" "/> - </else> - </choose> - </if> - <else> - <label variable="locator" form="short" suffix=" "/> - </else> - </choose> - </if> - <else-if type="bill book graphic legal_case legislation motion_picture report song" match="any"> - <number variable="volume" form="numeric" suffix=":"/> - </else-if> - </choose> - <text variable="locator"/> - </if> - </choose> - </macro> - <macro name="container-prefix"> - <text term="in" text-case="capitalize-first"/> - </macro> - <macro name="container-title"> - <choose> - <if type="chapter paper-conference" match="any"> - <text macro="container-prefix" suffix=" "/> - </if> - </choose> - <choose> - <if type="legal_case" match="none"> - <text variable="container-title" text-case="title" font-style="italic"/> - </if> - </choose> - </macro> - <macro name="publisher"> - <group delimiter=": "> - <text variable="publisher-place"/> - <text variable="publisher"/> - </group> - </macro> - <macro name="date"> - <choose> - <if variable="issued"> - <date variable="issued"> - <date-part name="year"/> - </date> - </if> - <else-if variable="accessed"> - <date variable="accessed"> - <date-part name="year"/> - </date> - </else-if> - </choose> - </macro> - <macro name="day-month"> - <date variable="issued"> - <date-part name="month"/> - <date-part name="day" prefix=" "/> - </date> - </macro> - <macro name="collection-title"> - <text variable="collection-title" text-case="title"/> - <text variable="collection-number" prefix=" "/> - </macro> - <macro name="event"> - <group> - <text term="presented at" suffix=" "/> - <text variable="event"/> - </group> - </macro> - <macro name="description"> - <choose> - <if type="interview"> - <group delimiter=". "> - <text macro="interviewer"/> - <text variable="medium" text-case="capitalize-first"/> - </group> - </if> - <else> - <text variable="medium" text-case="capitalize-first" prefix=". "/> - </else> - </choose> - <choose> - <if variable="title" match="none"/> - <else-if type="thesis"/> - <else> - <group delimiter=" " prefix=". "> - <text variable="genre" text-case="capitalize-first"/> - <choose> - <if type="report"> - <text variable="number"/> - </if> - </choose> - </group> - </else> - </choose> - <!--This is for computer programs only. Localization new to 1.0.1, so may be missing in many locales--> - <group delimiter=" " prefix=" (" suffix=")"> - <text term="version"/> - <text variable="version"/> - </group> - </macro> - <macro name="issue"> - <choose> - <if type="article-journal"> - <text macro="day-month" prefix=" (" suffix=")"/> - </if> - <else-if type="legal_case"> - <text variable="authority" prefix=". "/> - </else-if> - <else-if type="speech"> - <group prefix=" " delimiter=", "> - <text macro="event"/> - <text macro="day-month"/> - <text variable="event-place"/> - </group> - </else-if> - <else-if type="article-newspaper article-magazine" match="any"> - <text macro="day-month" prefix=", "/> - </else-if> - <else> - <group prefix=". " delimiter=", "> - <choose> - <if type="thesis"> - <text variable="genre" text-case="capitalize-first"/> - </if> - </choose> - <text macro="publisher"/> - </group> - </else> - </choose> - </macro> - <citation et-al-min="4" et-al-use-first="1" disambiguate-add-year-suffix="true" disambiguate-add-names="true" disambiguate-add-givenname="true" givenname-disambiguation-rule="primary-name"> - <layout prefix="(" suffix=")" delimiter="; "> - <group delimiter=", "> - <group delimiter=" "> - <text macro="contributors-short"/> - <text macro="date"/> - </group> - <text macro="point-locators"/> - </group> - </layout> - </citation> - <bibliography hanging-indent="true" et-al-min="11" et-al-use-first="7" subsequent-author-substitute="———" entry-spacing="0"> - <sort> - <key macro="contributors"/> - <key variable="issued"/> - </sort> - <layout suffix="."> - <group delimiter=". "> - <text macro="contributors"/> - <text macro="date"/> - <text macro="title"/> - </group> - <text macro="description"/> - <text macro="secondary-contributors" prefix=". "/> - <text macro="container-title" prefix=". "/> - <text macro="container-contributors"/> - <text macro="edition"/> - <text macro="locators-chapter"/> - <text macro="locators"/> - <text macro="collection-title" prefix=". "/> - <text macro="issue"/> - <text macro="locators-article"/> - <text macro="access" prefix=". "/> - </layout> - </bibliography> -</style> diff --git a/make_osx_package.sh b/make_osx_package.sh index dcf06fad4..8b268f7d7 100755 --- a/make_osx_package.sh +++ b/make_osx_package.sh @@ -16,7 +16,6 @@ mkdir -p $RESOURCES echo Building pandoc... cabal-dev install-deps -cabal-dev install --reinstall --force-reinstalls --flags="embed_data_files" citeproc-hs cabal-dev configure --prefix=/usr/local --datasubdir=$BASE --docdir=/usr/local/doc/$BASE cabal-dev build cabal-dev copy --destdir=$ROOT diff --git a/pandoc.cabal b/pandoc.cabal index e22908918..51f60f160 100644 --- a/pandoc.cabal +++ b/pandoc.cabal @@ -99,8 +99,6 @@ Data-Files: data/slideous/slideous.js, -- data for dzslides writer data/dzslides/template.html, - -- data for citeproc - data/default.csl, -- sample lua custom writer data/sample.lua -- documentation @@ -125,10 +123,6 @@ Extra-Source-Files: tests/insert, tests/lalune.jpg, tests/movie.jpg, - tests/biblio.bib, - tests/chicago-author-date.csl, - tests/ieee.csl, - tests/mhra.csl, tests/latex-reader.latex, tests/latex-reader.native, tests/textile-reader.textile, @@ -136,9 +130,7 @@ Extra-Source-Files: tests/markdown-reader-more.txt, tests/markdown-reader-more.native, tests/markdown-citations.txt, - tests/markdown-citations.chicago-author-date.txt, - tests/markdown-citations.mhra.txt, - tests/markdown-citations.ieee.txt, + tests/markdown-citations.native, tests/textile-reader.textile, tests/mediawiki-reader.wiki, tests/mediawiki-reader.native, @@ -246,11 +238,10 @@ Library old-locale >= 1 && < 1.1, time >= 1.2 && < 1.5, HTTP >= 4000.0.5 && < 4000.3, - texmath >= 0.6.3 && < 0.7, + texmath >= 0.6.4 && < 0.7, xml >= 1.3.12 && < 1.4, random >= 1 && < 1.1, extensible-exceptions >= 0.1 && < 0.2, - citeproc-hs >= 0.3.7 && < 0.4, pandoc-types >= 1.12 && < 1.13, aeson >= 0.6 && < 0.7, tagsoup >= 0.12.5 && < 0.14, @@ -323,7 +314,6 @@ Library Text.Pandoc.UTF8, Text.Pandoc.Templates, Text.Pandoc.XML, - Text.Pandoc.Biblio, Text.Pandoc.SelfContained, Text.Pandoc.Process Other-Modules: Text.Pandoc.Readers.Haddock.Lex, @@ -353,8 +343,7 @@ Executable pandoc extensible-exceptions >= 0.1 && < 0.2, highlighting-kate >= 0.5.5 && < 0.6, aeson >= 0.6 && < 0.7, - HTTP >= 4000.0.5 && < 4000.3, - citeproc-hs >= 0.3.7 && < 0.4 + HTTP >= 4000.0.5 && < 4000.3 Ghc-Options: -rtsopts -with-rtsopts=-K16m -Wall -fno-warn-unused-do-bind Ghc-Prof-Options: -auto-all -caf-all -rtsopts -with-rtsopts=-K16m if os(windows) @@ -35,7 +35,7 @@ import Text.Pandoc.PDF (makePDF) import Text.Pandoc.Readers.LaTeX (handleIncludes) import Text.Pandoc.Shared ( tabFilter, readDataFileUTF8, readDataFile, safeRead, headerShift, normalize, err, warn ) -import Text.Pandoc.XML ( toEntities, fromEntities ) +import Text.Pandoc.XML ( toEntities ) import Text.Pandoc.SelfContained ( makeSelfContained ) import Text.Pandoc.Process (pipeProcess) import Text.Highlighting.Kate ( languages, Style, tango, pygments, @@ -46,20 +46,18 @@ import System.FilePath import System.Console.GetOpt import Data.Char ( toLower ) import Data.List ( intercalate, isPrefixOf, sort ) -import System.Directory ( getAppUserDataDirectory, doesFileExist, findExecutable ) +import System.Directory ( getAppUserDataDirectory, findExecutable ) import System.IO ( stdout, stderr ) import System.IO.Error ( isDoesNotExistError ) import qualified Control.Exception as E import Control.Exception.Extensible ( throwIO ) import qualified Text.Pandoc.UTF8 as UTF8 -import qualified Text.CSL as CSL import Control.Monad (when, unless, liftM) import Data.Foldable (foldrM) import Network.HTTP (simpleHTTP, mkRequest, getResponseBody, RequestMethod(..)) import Network.URI (parseURI, isURI, URI(..)) import qualified Data.ByteString.Lazy as B import qualified Data.ByteString as BS -import Text.CSL.Reference (Reference(..)) import Data.Aeson (eitherDecode', encode) copyrightMessage :: String @@ -70,7 +68,7 @@ copyrightMessage = "\nCopyright (C) 2006-2013 John MacFarlane\n" ++ compileInfo :: String compileInfo = - "\nCompiled with citeproc-hs " ++ VERSION_citeproc_hs ++ ", texmath " ++ + "\nCompiled with texmath " ++ VERSION_texmath ++ ", highlighting-kate " ++ VERSION_highlighting_kate ++ ".\nSyntax highlighting is supported for the following languages:\n " ++ wrapWords 4 78 @@ -91,14 +89,14 @@ isTextFormat :: String -> Bool isTextFormat s = takeWhile (`notElem` "+-") s `notElem` ["odt","docx","epub","epub3"] externalFilter :: FilePath -> [String] -> Pandoc -> IO Pandoc -externalFilter f args' d = E.handle filterException $ - do (exitcode, outbs, errbs) <- pipeProcess Nothing f args' $ encode d +externalFilter f args' d = do + (exitcode, outbs, errbs) <- E.handle filterException $ + pipeProcess Nothing f args' $ encode d when (not $ B.null errbs) $ B.hPutStr stderr errbs case exitcode of ExitSuccess -> return $ either error id $ eitherDecode' outbs - ExitFailure _ -> err 83 $ "Error running filter " ++ f ++ "\n" ++ - UTF8.toStringLazy outbs - where filterException :: E.SomeException -> IO Pandoc + ExitFailure _ -> err 83 $ "Error running filter " ++ f + where filterException :: E.SomeException -> IO a filterException e = err 83 $ "Error running filter " ++ f ++ "\n" ++ show e @@ -146,9 +144,6 @@ data Opt = Opt , optIndentedCodeClasses :: [String] -- ^ Default classes for indented code blocks , optDataDir :: Maybe FilePath , optCiteMethod :: CiteMethod -- ^ Method to output cites - , optBibliography :: [String] - , optCslFile :: Maybe FilePath - , optAbbrevsFile :: Maybe FilePath , optListings :: Bool -- ^ Use listings package for code blocks , optLaTeXEngine :: String -- ^ Program to use for latex -> pdf , optSlideLevel :: Maybe Int -- ^ Header level that creates slides @@ -203,9 +198,6 @@ defaultOpts = Opt , optIndentedCodeClasses = [] , optDataDir = Nothing , optCiteMethod = Citeproc - , optBibliography = [] - , optCslFile = Nothing - , optAbbrevsFile = Nothing , optListings = False , optLaTeXEngine = "pdflatex" , optSlideLevel = Nothing @@ -288,7 +280,7 @@ options = "STRING") "" -- "Classes (whitespace- or comma-separated) to use for indented code-blocks" - , Option "" ["filter"] + , Option "F" ["filter"] (ReqArg (\arg opt -> return opt { optPlugins = externalFilter arg : optPlugins opt }) @@ -650,24 +642,6 @@ options = "PROGRAM") "" -- "Name of latex program to use in generating PDF" - , Option "" ["bibliography"] - (ReqArg - (\arg opt -> return opt { optBibliography = (optBibliography opt) ++ [arg] }) - "FILENAME") - "" - - , Option "" ["csl"] - (ReqArg - (\arg opt -> return opt { optCslFile = Just arg }) - "FILENAME") - "" - - , Option "" ["citation-abbreviations"] - (ReqArg - (\arg opt -> return opt { optAbbrevsFile = Just arg }) - "FILENAME") - "" - , Option "" ["natbib"] (NoArg (\opt -> return opt { optCiteMethod = Natbib })) @@ -904,9 +878,6 @@ main = do , optIdentifierPrefix = idPrefix , optIndentedCodeClasses = codeBlockClasses , optDataDir = mbDataDir - , optBibliography = reffiles - , optCslFile = mbCsl - , optAbbrevsFile = cslabbrevs , optCiteMethod = citeMethod , optListings = listings , optLaTeXEngine = latexEngine @@ -1007,36 +978,6 @@ main = do $ lines dztempl return $ ("dzslides-core", dzcore) : variables' else return variables' - - -- unescape reference ids, which may contain XML entities, so - -- that we can do lookups with regular string equality - let unescapeRefId ref = ref{ refId = fromEntities (refId ref) } - - refs <- mapM (\f -> E.catch (CSL.readBiblioFile f) - (\e -> let _ = (e :: E.SomeException) - in err 23 $ "Error reading bibliography `" ++ f ++ - "'" ++ "\n" ++ show e)) - reffiles >>= - return . map unescapeRefId . concat - - mbsty <- if citeMethod == Citeproc && not (null refs) - then do - csl <- CSL.parseCSL =<< - case mbCsl of - Nothing -> readDataFileUTF8 datadir - "default.csl" - Just cslfile -> do - exists <- doesFileExist cslfile - if exists - then UTF8.readFile cslfile - else do - csldir <- getAppUserDataDirectory "csl" - readDataFileUTF8 (Just csldir) - (replaceExtension cslfile "csl") - abbrevs <- maybe (return []) CSL.readJsonAbbrevFile cslabbrevs - return $ Just csl { CSL.styleAbbrevs = abbrevs } - else return Nothing - let sourceURL = case sources of [] -> Nothing (x:_) -> case parseURI x of @@ -1054,8 +995,6 @@ main = do , readerColumns = columns , readerTabStop = tabStop , readerOldDashes = oldDashes - , readerReferences = refs - , readerCitationStyle = mbsty , readerIndentedCodeClasses = codeBlockClasses , readerApplyMacros = not laTeXOutput , readerDefaultImageExtension = defaultImageExtension @@ -1069,7 +1008,6 @@ main = do writerHTMLMathMethod = mathMethod, writerIncremental = incremental, writerCiteMethod = citeMethod, - writerBiblioFiles = reffiles, writerIgnoreNotes = False, writerNumberSections = numberSections, writerNumberOffset = numberFrom, diff --git a/src/Text/Pandoc/Biblio.hs b/src/Text/Pandoc/Biblio.hs deleted file mode 100644 index 1c0975f11..000000000 --- a/src/Text/Pandoc/Biblio.hs +++ /dev/null @@ -1,216 +0,0 @@ -{-# LANGUAGE PatternGuards #-} -{- -Copyright (C) 2008 Andrea Rossato <andrea.rossato@ing.unitn.it> - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --} - -{- | - Module : Text.Pandoc.Biblio - Copyright : Copyright (C) 2008-2010 Andrea Rossato - License : GNU GPL, version 2 or above - - Maintainer : Andrea Rossato <andrea.rossato@unitn.it> - Stability : alpha - Portability : portable --} - -module Text.Pandoc.Biblio ( processBiblio ) where - -import Data.List -import Data.Char ( isDigit, isPunctuation ) -import qualified Data.Map as M -import Text.CSL hiding ( Cite(..), Citation(..), endWithPunct ) -import qualified Text.CSL as CSL ( Cite(..) ) -import Text.Pandoc.Definition -import Text.Pandoc.Generic -import Text.Pandoc.Walk -import Text.Pandoc.Shared (stringify) -import Text.Parsec hiding (State) -import Control.Monad -import Control.Monad.State - --- | Process a 'Pandoc' document by adding citations formatted --- according to a CSL style, using 'citeproc' from citeproc-hs. -processBiblio :: Maybe Style -> [Reference] -> Pandoc -> Pandoc -processBiblio Nothing _ p = p -processBiblio _ [] p = p -processBiblio (Just style) r p = - let p' = evalState (bottomUpM setHash p) 1 - grps = query getCitation p' - result = citeproc procOpts style r (setNearNote style $ - map (map toCslCite) grps) - cits_map = M.fromList $ zip grps (citations result) - biblioList = map (renderPandoc' style) (bibliography result) - Pandoc m b = bottomUp mvPunct . deNote . topDown (processCite style cits_map) $ p' - (bs, lastb) = case reverse b of - x@(Header _ _ _) : xs -> (reverse xs, [x]) - _ -> (b, []) - in Pandoc m $ bs ++ [Div ("",["references"],[]) (lastb ++ biblioList)] - --- | Substitute 'Cite' elements with formatted citations. -processCite :: Style -> M.Map [Citation] [FormattedOutput] -> Inline -> Inline -processCite s cs (Cite t _) = - case M.lookup t cs of - Just (x:xs) - | isTextualCitation t && not (null xs) -> - let xs' = renderPandoc s xs - in if styleClass s == "note" - then Cite t (renderPandoc s [x] ++ [Note [Para xs']]) - else Cite t (renderPandoc s [x] ++ [Space | not (startWithPunct xs')] ++ xs') - | otherwise -> if styleClass s == "note" - then Cite t [Note [Para $ renderPandoc s (x:xs)]] - else Cite t (renderPandoc s (x:xs)) - _ -> Strong [Str "???"] -- TODO raise error instead? -processCite _ _ x = x - -isNote :: Inline -> Bool -isNote (Note _) = True -isNote (Cite _ [Note _]) = True -isNote _ = False - -mvPunct :: [Inline] -> [Inline] -mvPunct (Space : Space : xs) = Space : xs -mvPunct (Space : x : ys) | isNote x, startWithPunct ys = - Str (headInline ys) : x : tailFirstInlineStr ys -mvPunct (Space : x : ys) | isNote x = x : ys -mvPunct xs = xs - --- A replacement for citeproc-hs's endWithPunct, which wrongly treats --- a sentence ending in '.)' as not ending with punctuation, leading --- to an extra period. -endWithPunct :: [Inline] -> Bool -endWithPunct [] = True -endWithPunct xs@(_:_) = case reverse (stringify [last xs]) of - [] -> True - (')':c:_) | isEndPunct c -> True - (c:_) | isEndPunct c -> True - | otherwise -> False - where isEndPunct c = c `elem` ".,;:!?" - -deNote :: Pandoc -> Pandoc -deNote = topDown go - where go (Cite (c:cs) [Note xs]) = - Cite (c:cs) [Note $ bottomUp go' $ sanitize c xs] - go (Note xs) = Note $ bottomUp go' xs - go x = x - go' (Note [Para xs]:ys) = - if startWithPunct ys && endWithPunct xs - then initInline xs ++ ys - else xs ++ ys - go' xs = xs - sanitize :: Citation -> [Block] -> [Block] - sanitize Citation{citationPrefix = pref} [Para xs] = - case (null pref, endWithPunct xs) of - (True, False) -> [Para $ xs ++ [Str "."]] - (True, True) -> [Para xs] - (False, False) -> [Para $ toCapital $ xs ++ [Str "."]] - (False, True) -> [Para $ toCapital xs] - sanitize _ bs = bs - -isTextualCitation :: [Citation] -> Bool -isTextualCitation (c:_) = citationMode c == AuthorInText -isTextualCitation _ = False - --- | Retrieve all citations from a 'Pandoc' docuument. To be used with --- 'query'. -getCitation :: Inline -> [[Citation]] -getCitation i | Cite t _ <- i = [t] - | otherwise = [] - -setHash :: Citation -> State Int Citation -setHash c = do - ident <- get - put $ ident + 1 - return c{ citationHash = ident } - -toCslCite :: Citation -> CSL.Cite -toCslCite c - = let (l, s) = locatorWords $ citationSuffix c - (la,lo) = parseLocator l - s' = case (l,s) of - -- treat a bare locator as if it begins with space - -- so @item1 [blah] is like [@item1, blah] - ("",(x:_)) - | not (isPunct x) -> [Space] ++ s - _ -> s - isPunct (Str (x:_)) = isPunctuation x - isPunct _ = False - citMode = case citationMode c of - AuthorInText -> (True, False) - SuppressAuthor -> (False,True ) - NormalCitation -> (False,False) - in emptyCite { CSL.citeId = citationId c - , CSL.citePrefix = PandocText $ citationPrefix c - , CSL.citeSuffix = PandocText s' - , CSL.citeLabel = la - , CSL.citeLocator = lo - , CSL.citeNoteNumber = show $ citationNoteNum c - , CSL.authorInText = fst citMode - , CSL.suppressAuthor = snd citMode - , CSL.citeHash = citationHash c - } - -locatorWords :: [Inline] -> (String, [Inline]) -locatorWords inp = - case parse pLocatorWords "suffix" $ breakup inp of - Right r -> r - Left _ -> ("",inp) - where breakup [] = [] - breakup (Str x : xs) = map Str (splitup x) ++ breakup xs - breakup (x : xs) = x : breakup xs - splitup = groupBy (\x y -> x /= '\160' && y /= '\160') - -pLocatorWords :: Parsec [Inline] st (String, [Inline]) -pLocatorWords = do - l <- pLocator - s <- getInput -- rest is suffix - if length l > 0 && last l == ',' - then return (init l, Str "," : s) - else return (l, s) - -pMatch :: (Inline -> Bool) -> Parsec [Inline] st Inline -pMatch condition = try $ do - t <- anyToken - guard $ condition t - return t - -pSpace :: Parsec [Inline] st Inline -pSpace = pMatch (\t -> t == Space || t == Str "\160") - -pLocator :: Parsec [Inline] st String -pLocator = try $ do - optional $ pMatch (== Str ",") - optional pSpace - f <- (guardFollowingDigit >> return [Str "p"]) -- "page" the default - <|> many1 (notFollowedBy pSpace >> anyToken) - gs <- many1 pWordWithDigits - return $ stringify f ++ (' ' : unwords gs) - -guardFollowingDigit :: Parsec [Inline] st () -guardFollowingDigit = do - t <- lookAhead anyToken - case t of - Str (d:_) | isDigit d -> return () - _ -> mzero - -pWordWithDigits :: Parsec [Inline] st String -pWordWithDigits = try $ do - optional pSpace - r <- many1 (notFollowedBy pSpace >> anyToken) - let s = stringify r - guard $ any isDigit s - return s - diff --git a/src/Text/Pandoc/Options.hs b/src/Text/Pandoc/Options.hs index c7c37d6b8..48e418ab2 100644 --- a/src/Text/Pandoc/Options.hs +++ b/src/Text/Pandoc/Options.hs @@ -48,7 +48,6 @@ import Data.Set (Set) import qualified Data.Set as Set import Data.Default import Text.Pandoc.Highlighting (Style, pygments) -import qualified Text.CSL as CSL -- | Individually selectable syntax extensions. data Extension = @@ -205,8 +204,6 @@ data ReaderOptions = ReaderOptions{ , readerOldDashes :: Bool -- ^ Use pandoc <= 1.8.2.1 behavior -- in parsing dashes; -- is em-dash; -- - before numerial is en-dash - , readerReferences :: [CSL.Reference] -- ^ Bibliographic references - , readerCitationStyle :: Maybe CSL.Style -- ^ Citation style , readerApplyMacros :: Bool -- ^ Apply macros to TeX math , readerIndentedCodeClasses :: [String] -- ^ Default classes for -- indented code blocks @@ -223,8 +220,6 @@ instance Default ReaderOptions , readerColumns = 80 , readerTabStop = 4 , readerOldDashes = False - , readerReferences = [] - , readerCitationStyle = Nothing , readerApplyMacros = True , readerIndentedCodeClasses = [] , readerDefaultImageExtension = "" @@ -289,7 +284,6 @@ data WriterOptions = WriterOptions , writerSourceURL :: Maybe String -- ^ Absolute URL + directory of 1st source file , writerUserDataDir :: Maybe FilePath -- ^ Path of user data directory , writerCiteMethod :: CiteMethod -- ^ How to print cites - , writerBiblioFiles :: [FilePath] -- ^ Biblio files to use for citations , writerHtml5 :: Bool -- ^ Produce HTML5 , writerHtmlQTags :: Bool -- ^ Use @<q>@ tags for quotes in HTML , writerBeamer :: Bool -- ^ Produce beamer LaTeX slide show @@ -332,7 +326,6 @@ instance Default WriterOptions where , writerSourceURL = Nothing , writerUserDataDir = Nothing , writerCiteMethod = Citeproc - , writerBiblioFiles = [] , writerHtml5 = False , writerHtmlQTags = False , writerBeamer = False diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs index 028d83e24..5d73134cd 100644 --- a/src/Text/Pandoc/Readers/LaTeX.hs +++ b/src/Text/Pandoc/Readers/LaTeX.hs @@ -38,7 +38,6 @@ import Text.Pandoc.Definition import Text.Pandoc.Walk import Text.Pandoc.Shared import Text.Pandoc.Options -import Text.Pandoc.Biblio (processBiblio) import Text.Pandoc.Parsing hiding ((<|>), many, optional, space) import qualified Text.Pandoc.UTF8 as UTF8 import Data.Char ( chr, ord ) @@ -47,6 +46,7 @@ import Text.Pandoc.Builder import Data.Char (isLetter) import Control.Applicative import Data.Monoid +import Data.Maybe (fromMaybe) import System.Environment (getEnv) import System.FilePath (replaceExtension, (</>)) import Data.List (intercalate, intersperse) @@ -67,9 +67,7 @@ parseLaTeX = do eof st <- getState let meta = stateMeta st - refs <- getOption readerReferences - mbsty <- getOption readerCitationStyle - let (Pandoc _ bs') = processBiblio mbsty refs $ doc bs + let (Pandoc _ bs') = doc bs return $ Pandoc meta bs' type LP = Parser [Char] ParserState @@ -903,7 +901,7 @@ environments = M.fromList lookup "numbers" options == Just "left" ] ++ maybe [] (:[]) (lookup "language" options >>= fromListingsLanguage) - let attr = ("",classes,kvs) + let attr = (fromMaybe "" (lookup "label" options),classes,kvs) codeBlockWith attr <$> (verbEnv "lstlisting")) , ("minted", do options <- option [] keyvals lang <- grouped (many1 $ satisfy (/='}')) diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs index 05662d9b5..658335202 100644 --- a/src/Text/Pandoc/Readers/Markdown.hs +++ b/src/Text/Pandoc/Readers/Markdown.hs @@ -54,7 +54,6 @@ import Text.Pandoc.Parsing hiding (tableWith) import Text.Pandoc.Readers.LaTeX ( rawLaTeXInline, rawLaTeXBlock ) import Text.Pandoc.Readers.HTML ( htmlTag, htmlInBalanced, isInlineTag, isBlockTag, isTextTag, isCommentTag ) -import Text.Pandoc.Biblio (processBiblio) import Data.Monoid (mconcat, mempty) import Control.Applicative ((<$>), (<*), (*>), (<$)) import Control.Monad @@ -327,9 +326,7 @@ parseMarkdown = do st <- getState let meta = runF (stateMeta' st) st let Pandoc _ bs = B.doc $ runF blocks st - mbsty <- getOption readerCitationStyle - refs <- getOption readerReferences - return $ processBiblio mbsty refs $ Pandoc meta bs + return $ Pandoc meta bs addWarning :: Maybe SourcePos -> String -> MarkdownParser () addWarning mbpos msg = diff --git a/src/Text/Pandoc/Readers/TeXMath.hs b/src/Text/Pandoc/Readers/TeXMath.hs index fe49a992e..1f7088f72 100644 --- a/src/Text/Pandoc/Readers/TeXMath.hs +++ b/src/Text/Pandoc/Readers/TeXMath.hs @@ -30,93 +30,13 @@ Conversion of TeX math to a list of 'Pandoc' inline elements. module Text.Pandoc.Readers.TeXMath ( readTeXMath ) where import Text.Pandoc.Definition -import Text.TeXMath.Types -import Text.TeXMath.Parser +import Text.TeXMath -- | Converts a raw TeX math formula to a list of 'Pandoc' inlines. -- Defaults to raw formula between @$@ characters if entire formula -- can't be converted. readTeXMath :: String -- ^ String to parse (assumes @'\n'@ line endings) -> [Inline] -readTeXMath inp = case texMathToPandoc inp of +readTeXMath inp = case texMathToPandoc DisplayInline inp of Left _ -> [Str ("$" ++ inp ++ "$")] Right res -> res - -texMathToPandoc :: String -> Either String [Inline] -texMathToPandoc inp = inp `seq` - case parseFormula inp of - Left err -> Left err - Right exps -> case expsToInlines exps of - Nothing -> Left "Formula too complex for [Inline]" - Just r -> Right r - -expsToInlines :: [Exp] -> Maybe [Inline] -expsToInlines xs = do - res <- mapM expToInlines xs - return (concat res) - -expToInlines :: Exp -> Maybe [Inline] -expToInlines (ENumber s) = Just [Str s] -expToInlines (EIdentifier s) = Just [Emph [Str s]] -expToInlines (EMathOperator s) = Just [Str s] -expToInlines (ESymbol t s) = Just $ addSpace t (Str s) - where addSpace Op x = [x, thinspace] - addSpace Bin x = [medspace, x, medspace] - addSpace Rel x = [widespace, x, widespace] - addSpace Pun x = [x, thinspace] - addSpace _ x = [x] - thinspace = Str "\x2006" - medspace = Str "\x2005" - widespace = Str "\x2004" -expToInlines (EStretchy x) = expToInlines x -expToInlines (EDelimited start end xs) = do - xs' <- mapM expToInlines xs - return $ [Str start] ++ concat xs' ++ [Str end] -expToInlines (EGrouped xs) = expsToInlines xs -expToInlines (ESpace "0.167em") = Just [Str "\x2009"] -expToInlines (ESpace "0.222em") = Just [Str "\x2005"] -expToInlines (ESpace "0.278em") = Just [Str "\x2004"] -expToInlines (ESpace "0.333em") = Just [Str "\x2004"] -expToInlines (ESpace "1em") = Just [Str "\x2001"] -expToInlines (ESpace "2em") = Just [Str "\x2001\x2001"] -expToInlines (ESpace _) = Just [Str " "] -expToInlines (EBinary _ _ _) = Nothing -expToInlines (ESub x y) = do - x' <- expToInlines x - y' <- expToInlines y - return $ x' ++ [Subscript y'] -expToInlines (ESuper x y) = do - x' <- expToInlines x - y' <- expToInlines y - return $ x' ++ [Superscript y'] -expToInlines (ESubsup x y z) = do - x' <- expToInlines x - y' <- expToInlines y - z' <- expToInlines z - return $ x' ++ [Subscript y'] ++ [Superscript z'] -expToInlines (EDown x y) = expToInlines (ESub x y) -expToInlines (EUp x y) = expToInlines (ESuper x y) -expToInlines (EDownup x y z) = expToInlines (ESubsup x y z) -expToInlines (EText TextNormal x) = Just [Str x] -expToInlines (EText TextBold x) = Just [Strong [Str x]] -expToInlines (EText TextMonospace x) = Just [Code nullAttr x] -expToInlines (EText TextItalic x) = Just [Emph [Str x]] -expToInlines (EText _ x) = Just [Str x] -expToInlines (EOver (EGrouped [EIdentifier [c]]) (ESymbol Accent [accent])) = - case accent of - '\x203E' -> Just [Emph [Str [c,'\x0304']]] -- bar - '\x00B4' -> Just [Emph [Str [c,'\x0301']]] -- acute - '\x0060' -> Just [Emph [Str [c,'\x0300']]] -- grave - '\x02D8' -> Just [Emph [Str [c,'\x0306']]] -- breve - '\x02C7' -> Just [Emph [Str [c,'\x030C']]] -- check - '.' -> Just [Emph [Str [c,'\x0307']]] -- dot - '\x00B0' -> Just [Emph [Str [c,'\x030A']]] -- ring - '\x20D7' -> Just [Emph [Str [c,'\x20D7']]] -- arrow right - '\x20D6' -> Just [Emph [Str [c,'\x20D6']]] -- arrow left - '\x005E' -> Just [Emph [Str [c,'\x0302']]] -- hat - '\x0302' -> Just [Emph [Str [c,'\x0302']]] -- hat - '~' -> Just [Emph [Str [c,'\x0303']]] -- tilde - _ -> Nothing -expToInlines _ = Nothing - - diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs index ab579a326..37ca60ce3 100644 --- a/src/Text/Pandoc/Writers/LaTeX.hs +++ b/src/Text/Pandoc/Writers/LaTeX.hs @@ -43,7 +43,6 @@ import Data.Char ( toLower, isPunctuation ) import Control.Applicative ((<|>)) import Control.Monad.State import Text.Pandoc.Pretty -import System.FilePath (dropExtension) import Text.Pandoc.Slides import Text.Pandoc.Highlighting (highlight, styleToLaTeX, formatLaTeXInline, formatLaTeXBlock, @@ -120,7 +119,6 @@ pandocToLaTeX options (Pandoc meta blocks) = do (biblioTitle :: String) <- liftM (render colwidth) $ inlineListToLaTeX lastHeader let main = render colwidth $ vsep body st <- get - let biblioFiles = intercalate "," $ map dropExtension $ writerBiblioFiles options let context = defField "toc" (writerTableOfContents options) $ defField "toc-depth" (show (writerTOCDepth options - if writerChapters options @@ -152,11 +150,9 @@ pandocToLaTeX options (Pandoc meta blocks) = do $ writerHighlightStyle options ) else id) $ (case writerCiteMethod options of - Natbib -> defField "biblio-files" biblioFiles . - defField "biblio-title" biblioTitle . + Natbib -> defField "biblio-title" biblioTitle . defField "natbib" True - Biblatex -> defField "biblio-files" biblioFiles . - defField "biblio-title" biblioTitle . + Biblatex -> defField "biblio-title" biblioTitle . defField "biblatex" True _ -> id) $ metadata @@ -313,7 +309,7 @@ blockToLaTeX (BlockQuote lst) = do _ -> do contents <- blockListToLaTeX lst return $ "\\begin{quote}" $$ contents $$ "\\end{quote}" -blockToLaTeX (CodeBlock (_,classes,keyvalAttr) str) = do +blockToLaTeX (CodeBlock (identifier,classes,keyvalAttr) str) = do opts <- gets stOptions case () of _ | isEnabled Ext_literate_haskell opts && "haskell" `elem` classes && @@ -344,7 +340,11 @@ blockToLaTeX (CodeBlock (_,classes,keyvalAttr) str) = do [ (if key == "startFrom" then "firstnumber" else key) ++ "=" ++ attr | - (key,attr) <- keyvalAttr ] + (key,attr) <- keyvalAttr ] ++ + (if identifier == "" + then [] + else [ "label=" ++ identifier ]) + else [] printParams | null params = empty diff --git a/tests/Tests/Old.hs b/tests/Tests/Old.hs index 8609781d0..01e4403fb 100644 --- a/tests/Tests/Old.hs +++ b/tests/Tests/Old.hs @@ -63,7 +63,10 @@ tests = [ testGroup "markdown" "markdown-reader-more.txt" "markdown-reader-more.native" , lhsReaderTest "markdown+lhs" ] - , testGroup "citations" markdownCitationTests + , testGroup "citations" + [ test "citations" ["-r", "markdown", "-w", "native"] + "markdown-citations.txt" "markdown-citations.native" + ] ] , testGroup "rst" [ testGroup "writer" (writerTests "rst" ++ lhsWriterTests "rst") @@ -190,19 +193,6 @@ fb2WriterTest title opts inputfile normfile = ignoreBinary = unlines . filter (not . startsWith "<binary ") . lines startsWith tag str = all (uncurry (==)) $ zip tag str -markdownCitationTests :: [Test] -markdownCitationTests - = map styleToTest ["chicago-author-date","ieee","mhra"] - ++ [test "natbib" wopts "markdown-citations.txt" - "markdown-citations.txt"] - where - ropts = ["-r", "markdown", "-w", "markdown-citations", "--bibliography", - "biblio.bib", "--no-wrap"] - wopts = ["-r", "markdown", "-w", "markdown", "--no-wrap", "--natbib"] - styleToTest style = test style (ropts ++ ["--csl", style ++ ".csl"]) - "markdown-citations.txt" - ("markdown-citations." ++ style ++ ".txt") - -- | Run a test without normalize function, return True if test passed. test :: String -- ^ Title of test -> [String] -- ^ Options to pass to pandoc diff --git a/tests/Tests/Readers/LaTeX.hs b/tests/Tests/Readers/LaTeX.hs index 88029b7c2..dff6e4537 100644 --- a/tests/Tests/Readers/LaTeX.hs +++ b/tests/Tests/Readers/LaTeX.hs @@ -55,6 +55,13 @@ tests = [ testGroup "basic" "hi % this is a comment\nthere\n" =?> para "hi there" ] + , testGroup "code blocks" + [ "identifier" =: + "\\begin{lstlisting}[label=test]\\end{lstlisting}" =?> codeBlockWith ("test", [], [("label","test")]) "" + , "no identifier" =: + "\\begin{lstlisting}\\end{lstlisting}" =?> codeBlock "" + ] + , testGroup "citations" [ natbibCitations , biblatexCitations diff --git a/tests/Tests/Writers/LaTeX.hs b/tests/Tests/Writers/LaTeX.hs index ebde5b97c..5f702a85d 100644 --- a/tests/Tests/Writers/LaTeX.hs +++ b/tests/Tests/Writers/LaTeX.hs @@ -10,6 +10,9 @@ import Tests.Arbitrary() latex :: (ToString a, ToPandoc a) => a -> String latex = writeLaTeX def . toPandoc +latexListing :: (ToString a, ToPandoc a) => a -> String +latexListing = writeLaTeX def{ writerListings = True } . toPandoc + {- "my test" =: X =?> Y @@ -31,6 +34,10 @@ tests :: [Test] tests = [ testGroup "code blocks" [ "in footnotes" =: note (para "hi" <> codeBlock "hi") =?> "\\footnote{hi\n\n\\begin{Verbatim}\nhi\n\\end{Verbatim}\n}" + , test latexListing "identifier" $ codeBlockWith ("id",[],[]) "hi" =?> + ("\\begin{lstlisting}[label=id]\nhi\n\\end{lstlisting}" :: String) + , test latexListing "no identifier" $ codeBlock "hi" =?> + ("\\begin{lstlisting}\nhi\n\\end{lstlisting}" :: String) ] , testGroup "math" [ "escape |" =: para (math "\\sigma|_{\\{x\\}}") =?> diff --git a/tests/biblio.bib b/tests/biblio.bib deleted file mode 100644 index 4eb2ba0d0..000000000 --- a/tests/biblio.bib +++ /dev/null @@ -1,26 +0,0 @@ -@Book{item1, -author="John Doe", -title="First Book", -year="2005", -address="Cambridge", -publisher="Cambridge University Press" -} - -@Article{item2, -author="John Doe", -title="Article", -year="2006", -journal="Journal of Generic Studies", -volume="6", -pages="33-34" -} - -@InCollection{пункт3, -author="John Doe and Jenny Roe", -title="Why Water Is Wet", -booktitle="Third Book", -editor="Sam Smith", -publisher="Oxford University Press", -address="Oxford", -year="2007" -} diff --git a/tests/chicago-author-date.csl b/tests/chicago-author-date.csl deleted file mode 100644 index 83a70d0b5..000000000 --- a/tests/chicago-author-date.csl +++ /dev/null @@ -1,458 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="never"> - <info> - <title>Chicago Manual of Style (author-date)</title> - <id>http://www.zotero.org/styles/chicago-author-date</id> - <link href="http://www.zotero.org/styles/chicago-author-date" rel="self"/> - <link href="http://www.chicagomanualofstyle.org/tools_citationguide.html" rel="documentation"/> - <author> - <name>Julian Onions</name> - <email>julian.onions@gmail.com</email> - </author> - <contributor> - <name>Sebastian Karcher</name> - </contributor> - <contributor> - <name>Richard Karnesky</name> - <email>karnesky+zotero@gmail.com</email> - <uri>http://arc.nucapt.northwestern.edu/Richard_Karnesky</uri> - </contributor> - <category citation-format="author-date"/> - <category field="generic-base"/> - <summary>The author-date variant of the Chicago style</summary> - <updated>2013-03-28T05:37:10+00:00</updated> - <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights> - </info> - <locale> - <terms> - <term name="editor" form="verb-short">ed.</term> - <term name="container-author" form="verb">by</term> - <term name="translator" form="verb-short">trans.</term> - <term name="translator" form="short">trans.</term> - </terms> - </locale> - <macro name="secondary-contributors"> - <choose> - <if type="chapter paper-conference" match="none"> - <group delimiter=". "> - <names variable="editor translator"> - <label form="verb" text-case="capitalize-first" suffix=" " plural="never"/> - <name and="text" delimiter=", "/> - </names> - </group> - </if> - </choose> - </macro> - <macro name="container-contributors"> - <choose> - <if type="chapter paper-conference" match="any"> - <group prefix=", " delimiter=", "> - <names variable="container-author editor" delimiter=", "> - <label form="verb" suffix=" " plural="never"/> - <name and="text" delimiter=", "/> - </names> - </group> - </if> - </choose> - </macro> - <macro name="editor"> - <names variable="editor"> - <name name-as-sort-order="first" and="text" sort-separator=", " delimiter=", " delimiter-precedes-last="always"/> - <label form="short" prefix=", "/> - </names> - </macro> - <macro name="translator"> - <names variable="translator"> - <name name-as-sort-order="first" and="text" sort-separator=", " delimiter=", " delimiter-precedes-last="always"/> - <label form="short" prefix=", " plural="never"/> - </names> - </macro> - <macro name="recipient"> - <choose> - <if type="personal_communication"> - <choose> - <if variable="genre"> - <text variable="genre" text-case="capitalize-first"/> - </if> - <else> - <text term="letter" text-case="capitalize-first"/> - </else> - </choose> - </if> - </choose> - <names variable="recipient" delimiter=", "> - <label form="verb" prefix=" " text-case="lowercase" suffix=" "/> - <name and="text" delimiter=", "/> - </names> - </macro> - <macro name="contributors"> - <names variable="author"> - <name and="text" name-as-sort-order="first" sort-separator=", " delimiter=", " delimiter-precedes-last="always"/> - <label form="short" plural="never" prefix=", "/> - <substitute> - <names variable="editor"/> - <names variable="translator"/> - <text macro="title"/> - </substitute> - </names> - <text macro="recipient"/> - </macro> - <macro name="contributors-short"> - <names variable="author"> - <name form="short" and="text" delimiter=", " initialize-with=". "/> - <substitute> - <names variable="editor"/> - <names variable="translator"/> - <text macro="title"/> - </substitute> - </names> - </macro> - <macro name="interviewer"> - <names variable="interviewer" delimiter=", "> - <label form="verb" prefix=" " text-case="capitalize-first" suffix=" "/> - <name and="text" delimiter=", "/> - </names> - </macro> - <macro name="archive"> - <group delimiter=". "> - <text variable="archive_location" text-case="capitalize-first"/> - <text variable="archive"/> - <text variable="archive-place"/> - </group> - </macro> - <macro name="access"> - <group delimiter=". "> - <choose> - <if type="graphic report" match="any"> - <text macro="archive"/> - </if> - <else-if type="article-magazine article-newspaper bill book chapter graphic legal_case legislation motion_picture paper-conference report song thesis" match="none"> - <text macro="archive"/> - </else-if> - </choose> - <text variable="DOI" prefix="doi:"/> - <choose> - <if variable="DOI issued" match="none"> - <choose> - <if variable="URL accessed" match="all"> - <group delimiter=" "> - <text term="accessed" text-case="capitalize-first"/> - <date variable="accessed" delimiter=" "> - <date-part name="month"/> - <date-part name="day"/> - </date> - </group> - </if> - </choose> - </if> - <else-if type="webpage"> - <date variable="issued" delimiter=" "> - <date-part name="month"/> - <date-part name="day"/> - </date> - </else-if> - </choose> - <choose> - <if type="legal_case" match="none"> - <text variable="URL"/> - </if> - </choose> - </group> - </macro> - <macro name="title"> - <choose> - <if variable="title" match="none"> - <choose> - <if type="personal_communication" match="none"> - <text variable="genre" text-case="capitalize-first"/> - </if> - </choose> - </if> - <else-if type="bill book graphic legal_case legislation motion_picture song" match="any"> - <text variable="title" text-case="title" font-style="italic"/> - </else-if> - <else> - <text variable="title" text-case="title" quotes="true"/> - </else> - </choose> - </macro> - <macro name="edition"> - <choose> - <if type="bill book graphic legal_case legislation motion_picture report song" match="any"> - <choose> - <if is-numeric="edition"> - <group delimiter=" " prefix=". "> - <number variable="edition" form="ordinal"/> - <text term="edition" form="short" strip-periods="true"/> - </group> - </if> - <else> - <text variable="edition" prefix=". "/> - </else> - </choose> - </if> - <else-if type="chapter paper-conference" match="any"> - <choose> - <if is-numeric="edition"> - <group delimiter=" " prefix=", "> - <number variable="edition" form="ordinal"/> - <text term="edition" form="short"/> - </group> - </if> - <else> - <text variable="edition" prefix=", "/> - </else> - </choose> - </else-if> - </choose> - </macro> - <macro name="locators"> - <choose> - <if type="article-journal"> - <text variable="volume" prefix=" "/> - <text variable="issue" prefix=" (" suffix=")"/> - </if> - <else-if type="legal_case"> - <text variable="volume" prefix=", "/> - <text variable="container-title" prefix=" "/> - <text variable="page" prefix=" "/> - </else-if> - <else-if type="bill book graphic legal_case legislation motion_picture report song" match="any"> - <group prefix=". " delimiter=". "> - <group> - <text term="volume" form="short" text-case="capitalize-first" suffix=" "/> - <number variable="volume" form="numeric"/> - </group> - <group> - <number variable="number-of-volumes" form="numeric"/> - <text term="volume" form="short" prefix=" " plural="true"/> - </group> - </group> - </else-if> - <else-if type="chapter paper-conference" match="any"> - <choose> - <if variable="page" match="none"> - <group prefix=". "> - <text term="volume" form="short" text-case="capitalize-first" suffix=" "/> - <number variable="volume" form="numeric"/> - </group> - </if> - </choose> - </else-if> - </choose> - </macro> - <macro name="locators-chapter"> - <choose> - <if type="chapter paper-conference" match="any"> - <choose> - <if variable="page"> - <group prefix=", "> - <text variable="volume" suffix=":"/> - <text variable="page"/> - </group> - </if> - </choose> - </if> - </choose> - </macro> - <macro name="locators-article"> - <choose> - <if type="article-newspaper"> - <group prefix=", " delimiter=", "> - <group> - <text variable="edition" suffix=" "/> - <text term="edition" prefix=" "/> - </group> - <group> - <text term="section" form="short" suffix=" "/> - <text variable="section"/> - </group> - </group> - </if> - <else-if type="article-journal"> - <text variable="page" prefix=": "/> - </else-if> - </choose> - </macro> - <macro name="point-locators"> - <choose> - <if variable="locator"> - <choose> - <if locator="page" match="none"> - <choose> - <if type="bill book graphic legal_case legislation motion_picture report song" match="any"> - <choose> - <if variable="volume"> - <group> - <text term="volume" form="short" suffix=" "/> - <number variable="volume" form="numeric"/> - <label variable="locator" form="short" prefix=", " suffix=" "/> - </group> - </if> - <else> - <label variable="locator" form="short" suffix=" "/> - </else> - </choose> - </if> - <else> - <label variable="locator" form="short" suffix=" "/> - </else> - </choose> - </if> - <else-if type="bill book graphic legal_case legislation motion_picture report song" match="any"> - <number variable="volume" form="numeric" suffix=":"/> - </else-if> - </choose> - <text variable="locator"/> - </if> - </choose> - </macro> - <macro name="container-prefix"> - <text term="in" text-case="capitalize-first"/> - </macro> - <macro name="container-title"> - <choose> - <if type="chapter paper-conference" match="any"> - <text macro="container-prefix" suffix=" "/> - </if> - </choose> - <choose> - <if type="legal_case" match="none"> - <text variable="container-title" text-case="title" font-style="italic"/> - </if> - </choose> - </macro> - <macro name="publisher"> - <group delimiter=": "> - <text variable="publisher-place"/> - <text variable="publisher"/> - </group> - </macro> - <macro name="date"> - <choose> - <if variable="issued"> - <date variable="issued"> - <date-part name="year"/> - </date> - </if> - <else-if variable="accessed"> - <date variable="accessed"> - <date-part name="year"/> - </date> - </else-if> - </choose> - </macro> - <macro name="day-month"> - <date variable="issued"> - <date-part name="month"/> - <date-part name="day" prefix=" "/> - </date> - </macro> - <macro name="collection-title"> - <text variable="collection-title" text-case="title"/> - <text variable="collection-number" prefix=" "/> - </macro> - <macro name="event"> - <group> - <text term="presented at" suffix=" "/> - <text variable="event"/> - </group> - </macro> - <macro name="description"> - <choose> - <if type="interview"> - <group delimiter=". "> - <text macro="interviewer"/> - <text variable="medium" text-case="capitalize-first"/> - </group> - </if> - <else> - <text variable="medium" text-case="capitalize-first" prefix=". "/> - </else> - </choose> - <choose> - <if variable="title" match="none"/> - <else-if type="thesis"/> - <else> - <group delimiter=" " prefix=". "> - <text variable="genre" text-case="capitalize-first"/> - <choose> - <if type="report"> - <text variable="number"/> - </if> - </choose> - </group> - </else> - </choose> - <!--This is for computer programs only. Localization new to 1.0.1, so may be missing in many locales--> - <group delimiter=" " prefix=" (" suffix=")"> - <text term="version"/> - <text variable="version"/> - </group> - </macro> - <macro name="issue"> - <choose> - <if type="article-journal"> - <text macro="day-month" prefix=" (" suffix=")"/> - </if> - <else-if type="legal_case"> - <text variable="authority" prefix=". "/> - </else-if> - <else-if type="speech"> - <group prefix=" " delimiter=", "> - <text macro="event"/> - <text macro="day-month"/> - <text variable="event-place"/> - </group> - </else-if> - <else-if type="article-newspaper article-magazine" match="any"> - <text macro="day-month" prefix=", "/> - </else-if> - <else> - <group prefix=". " delimiter=", "> - <choose> - <if type="thesis"> - <text variable="genre" text-case="capitalize-first"/> - </if> - </choose> - <text macro="publisher"/> - </group> - </else> - </choose> - </macro> - <citation et-al-min="4" et-al-use-first="1" disambiguate-add-year-suffix="true" disambiguate-add-names="true" disambiguate-add-givenname="true" givenname-disambiguation-rule="primary-name"> - <layout prefix="(" suffix=")" delimiter="; "> - <group delimiter=", "> - <group delimiter=" "> - <text macro="contributors-short"/> - <text macro="date"/> - </group> - <text macro="point-locators"/> - </group> - </layout> - </citation> - <bibliography hanging-indent="true" et-al-min="11" et-al-use-first="7" subsequent-author-substitute="———" entry-spacing="0"> - <sort> - <key macro="contributors"/> - <key variable="issued"/> - </sort> - <layout suffix="."> - <group delimiter=". "> - <text macro="contributors"/> - <text macro="date"/> - <text macro="title"/> - </group> - <text macro="description"/> - <text macro="secondary-contributors" prefix=". "/> - <text macro="container-title" prefix=". "/> - <text macro="container-contributors"/> - <text macro="edition"/> - <text macro="locators-chapter"/> - <text macro="locators"/> - <text macro="collection-title" prefix=". "/> - <text macro="issue"/> - <text macro="locators-article"/> - <text macro="access" prefix=". "/> - </layout> - </bibliography> -</style> diff --git a/tests/ieee.csl b/tests/ieee.csl deleted file mode 100644 index cd7ba4943..000000000 --- a/tests/ieee.csl +++ /dev/null @@ -1,302 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="sort-only"> - <info> - <title>IEEE</title> - <id>http://www.zotero.org/styles/ieee</id> - <link href="http://www.zotero.org/styles/ieee" rel="self"/> - <author> - <name>Michael Berkowitz</name> - <email>mberkowi@gmu.edu</email> - </author> - <contributor> - <name>Julian Onions</name> - <email>julian.onions@gmail.com</email> - </contributor> - <contributor> - <name>Rintze Zelle</name> - <uri>http://twitter.com/rintzezelle</uri> - </contributor> - <contributor> - <name>Stephen Frank</name> - <uri>http://www.zotero.org/sfrank</uri> - </contributor> - <contributor> - <name>Sebastian Karcher</name> - </contributor> - <category field="engineering"/> - <category field="generic-base"/> - <category citation-format="numeric"/> - <updated>2011-09-15T07:01:02+00:00</updated> - <rights> - This work is licensed under a Creative Commons Attribution-Share Alike 3.0 License: - http://creativecommons.org/licenses/by-sa/3.0/ - </rights> - <link href="http://www.ieee.org/portal/cms_docs_iportals/iportals/publications/authors/transjnl/stylemanual.pdf" rel="documentation"/> - <link href="http://www.ieee.org/documents/auinfo07.pdf" rel="documentation"/> - </info> - <!-- Macros --> - <macro name="edition"> - <choose> - <if type="bill book graphic legal_case motion_picture report song chapter paper-conference" match="any"> - <choose> - <if is-numeric="edition"> - <group delimiter=" "> - <number variable="edition" form="ordinal"/> - <text term="edition" form="short" suffix="." strip-periods="true"/> - </group> - </if> - <else> - <text variable="edition" text-case="capitalize-first" suffix="."/> - </else> - </choose> - </if> - </choose> - </macro> - <macro name="issued"> - <choose> - <if type="article-journal report" match="any"> - <date variable="issued"> - <date-part name="month" form="short" suffix=" "/> - <date-part name="year" form="long"/> - </date> - </if> - <else-if type="bill book graphic legal_case motion_picture song thesis chapter paper-conference" match="any"> - <date variable="issued"> - <date-part name="year" form="long"/> - </date> - </else-if> - <else> - <date variable="issued"> - <date-part name="day" form="numeric-leading-zeros" suffix="-"/> - <date-part name="month" form="short" suffix="-" strip-periods="true"/> - <date-part name="year" form="long"/> - </date> - </else> - </choose> - </macro> - <macro name="author"> - <names variable="author"> - <name initialize-with=". " delimiter=", " and="text"/> - <label form="short" prefix=", " text-case="capitalize-first" suffix="." strip-periods="true"/> - <substitute> - <names variable="editor"/> - <names variable="translator"/> - </substitute> - </names> - </macro> - <macro name="editor"> - <names variable="editor"> - <name initialize-with=". " delimiter=", " and="text"/> - <label form="short" prefix=", " text-case="capitalize-first" suffix="." strip-periods="true"/> - </names> - </macro> - <macro name="locators"> - <group delimiter=", "> - <text macro="edition"/> - <group delimiter=" "> - <text term="volume" form="short" suffix="." strip-periods="true"/> - <number variable="volume" form="numeric"/> - </group> - <group delimiter=" "> - <number variable="number-of-volumes" form="numeric"/> - <text term="volume" form="short" suffix="." plural="true" strip-periods="true"/> - </group> - <group delimiter=" "> - <text term="issue" form="short" suffix="." strip-periods="true"/> - <number variable="issue" form="numeric"/> - </group> - </group> - </macro> - <macro name="title"> - <choose> - <if type="bill book graphic legal_case motion_picture song" match="any"> - <text variable="title" font-style="italic"/> - </if> - <else> - <text variable="title" quotes="true"/> - </else> - </choose> - </macro> - <macro name="publisher"> - <choose> - <if type="bill book graphic legal_case motion_picture song chapter paper-conference" match="any"> - <text variable="publisher-place" suffix=": "/> - <text variable="publisher"/> - </if> - <else> - <group delimiter=", "> - <text variable="publisher"/> - <text variable="publisher-place"/> - </group> - </else> - </choose> - </macro> - <macro name="event"> - <choose> - <if type="paper-conference"> - <choose> - <!-- Published Conference Paper --> - <if variable="container-title"> - <group delimiter=", "> - <text variable="container-title" prefix="in " font-style="italic"/> - <text variable="event-place"/> - </group> - </if> - <!-- Unpublished Conference Paper --> - <else> - <group delimiter=", "> - <text variable="event" prefix="presented at the "/> - <text variable="event-place"/> - </group> - </else> - </choose> - </if> - </choose> - </macro> - <macro name="access"> - <choose> - <if type="webpage"> - <choose> - <if variable="URL"> - <group delimiter=". "> - <text value="[Online]"/> - <text variable="URL" prefix="Available: "/> - <group prefix="[" suffix="]"> - <date variable="accessed" prefix="Accessed: "> - <date-part name="day" form="numeric-leading-zeros" suffix="-"/> - <date-part name="month" form="short" suffix="-" strip-periods="true"/> - <date-part name="year" form="long"/> - </date> - </group> - </group> - </if> - </choose> - </if> - </choose> - </macro> - <macro name="page"> - <group> - <label variable="page" form="short" suffix=". " strip-periods="true"/> - <text variable="page"/> - </group> - </macro> - <!-- Citation --> - <citation collapse="citation-number"> - <sort> - <key variable="citation-number"/> - </sort> - <layout prefix="[" suffix="]" delimiter="], ["> - <text variable="citation-number"/> - </layout> - </citation> - <!-- Bibliography --> - <bibliography entry-spacing="0" second-field-align="flush"> - <layout suffix="."> - <!-- Citation Number --> - <text variable="citation-number" prefix="[" suffix="]"/> - <!-- Author(s) --> - <text macro="author" prefix=" " suffix=", "/> - <!-- Rest of Citation --> - <choose> - <!-- Specific Formats --> - <if type="article-journal"> - <group delimiter=", "> - <text macro="title"/> - <text variable="container-title" font-style="italic" form="short"/> - <text macro="locators"/> - <text macro="page"/> - <text macro="issued"/> - </group> - </if> - <else-if type="paper-conference"> - <group delimiter=", "> - <text macro="title"/> - <text macro="event"/> - <text macro="issued"/> - <text macro="locators"/> - <text macro="page"/> - </group> - </else-if> - <else-if type="report"> - <group delimiter=", "> - <text macro="title"/> - <text macro="publisher"/> - <group delimiter=" "> - <text variable="genre"/> - <text variable="number"/> - </group> - <text macro="issued"/> - </group> - </else-if> - <else-if type="thesis"> - <group delimiter=", "> - <text macro="title"/> - <text variable="genre"/> - <text macro="publisher"/> - <text macro="issued"/> - </group> - </else-if> - <else-if type="webpage"> - <group delimiter=", " suffix=". "> - <text macro="title"/> - <text variable="container-title" font-style="italic"/> - <text macro="issued"/> - </group> - <text macro="access"/> - </else-if> - <else-if type="patent"> - <text macro="title" suffix=", "/> - <text variable="number" prefix="U.S. Patent "/> - <text macro="issued"/> - </else-if> - <!-- Generic/Fallback Formats --> - <else-if type="bill book graphic legal_case motion_picture report song" match="any"> - <group delimiter=", " suffix=". "> - <text macro="title"/> - <text macro="locators"/> - </group> - <group delimiter=", "> - <text macro="publisher"/> - <text macro="issued"/> - <text macro="page"/> - </group> - </else-if> - <else-if type="article-magazine article-newspaper broadcast interview manuscript map patent personal_communication song speech thesis webpage" match="any"> - <group delimiter=", "> - <text macro="title"/> - <text variable="container-title" font-style="italic"/> - <text macro="locators"/> - <text macro="publisher"/> - <text macro="page"/> - <text macro="issued"/> - </group> - </else-if> - <else-if type="chapter paper-conference" match="any"> - <group delimiter=", " suffix=", "> - <text macro="title"/> - <text variable="container-title" prefix="in " font-style="italic"/> - <text macro="locators"/> - </group> - <text macro="editor" suffix=" "/> - <group delimiter=", "> - <text macro="publisher"/> - <text macro="issued"/> - <text macro="page"/> - </group> - </else-if> - <else> - <group delimiter=", " suffix=". "> - <text macro="title"/> - <text variable="container-title" font-style="italic"/> - <text macro="locators"/> - </group> - <group delimiter=", "> - <text macro="publisher"/> - <text macro="page"/> - <text macro="issued"/> - </group> - </else> - </choose> - </layout> - </bibliography> -</style>
\ No newline at end of file diff --git a/tests/markdown-citations.chicago-author-date.txt b/tests/markdown-citations.chicago-author-date.txt deleted file mode 100644 index 81d7482cb..000000000 --- a/tests/markdown-citations.chicago-author-date.txt +++ /dev/null @@ -1,51 +0,0 @@ -Pandoc with citeproc-hs -======================= - -- ([CSL BIBLIOGRAPHIC DATA ERROR: reference "nonexistent" not found.]) - -- ([CSL BIBLIOGRAPHIC DATA ERROR: reference "nonexistent" not found.]) - -- Doe (2005) says blah. - -- Doe (2005, 30) says blah. - -- Doe (2005, 30, with suffix) says blah. - -- Doe (2005; 2006, 30; see also Doe and Roe 2007) says blah. - -- In a note.[^1] - -- A citation group (see Doe 2005, chap. 3; also Doe and Roe 2007, 34–35). - -- Another one (see Doe 2005, 34–35). - -- And another one in a note.[^2] - -- Citation with a suffix and locator (Doe 2005, 33, 35–37, and nowhere else). - -- Citation with suffix only (Doe 2005 and nowhere else). - -- Now some modifiers.[^3] - -- With some markup (*see* Doe 2005, 32). - -<div class="references"> - -References -========== - -“Nonexistent Not Found!” - -Doe, John. 2005. *First Book*. Cambridge: Cambridge University Press. - -———. 2006. “Article.” *Journal of Generic Studies* 6: 33–34. - -Doe, John, and Jenny Roe. 2007. “Why Water Is Wet.” In *Third Book*, edited by Sam Smith. Oxford: Oxford University Press. - -</div> - -[^1]: Doe and Roe (2007, 12) and a citation without locators (Doe and Roe 2007). - -[^2]: Some citations (see Doe 2005, chap. 3; Doe and Roe 2007; Doe 2006). - -[^3]: Like a citation without author: (2005), and now Doe with a locator (2006, 44). diff --git a/tests/markdown-citations.ieee.txt b/tests/markdown-citations.ieee.txt deleted file mode 100644 index 4085a7c63..000000000 --- a/tests/markdown-citations.ieee.txt +++ /dev/null @@ -1,51 +0,0 @@ -Pandoc with citeproc-hs -======================= - -- [] - -- - -- Reference 2 says blah. - -- Reference 2 says blah. - -- Reference 2 says blah. - -- Reference 2 [4] says blah. - -- In a note.[^1] - -- A citation group [2], [4]. - -- Another one [2]. - -- And another one in a note.[^2] - -- Citation with a suffix and locator [2]. - -- Citation with suffix only [2]. - -- Now some modifiers.[^3] - -- With some markup [2]. - -<div class="references"> - -References -========== - -[1]“nonexistent not found!” . - -[2] J. Doe, *First Book*. Cambridge: Cambridge University Press, 2005. - -[3] J. Doe, “Article,” *Journal of Generic Studies*, vol. 6, pp. 33–34, 2006. - -[4] J. Doe and J. Roe, “Why Water Is Wet,” in *Third Book*, S. Smith, Ed. Oxford: Oxford University Press, 2007. - -</div> - -[^1]: Reference 4 and a citation without locators [4]. - -[^2]: Some citations [2–4]. - -[^3]: Like a citation without author: [2], and now Doe with a locator [3]. diff --git a/tests/markdown-citations.mhra.txt b/tests/markdown-citations.mhra.txt deleted file mode 100644 index 01d9c45ca..000000000 --- a/tests/markdown-citations.mhra.txt +++ /dev/null @@ -1,73 +0,0 @@ -Pandoc with citeproc-hs -======================= - -- [^1] - -- [^2] - -- John Doe[^3] says blah. - -- Doe[^4] says blah. - -- Doe[^5] says blah. - -- Doe[^6] says blah. - -- In a note.[^7] - -- A citation group.[^8] - -- Another one.[^9] - -- And another one in a note.[^10] - -- Citation with a suffix and locator.[^11] - -- Citation with suffix only.[^12] - -- Now some modifiers.[^13] - -- With some markup.[^14] - -<div class="references"> - -References -========== - -Doe, John, ‘Article’, *Journal of Generic Studies*, 6 (2006), 33–34. - ----, *First Book* (Cambridge: Cambridge University Press, 2005). - -Doe, John, and Jenny Roe, ‘Why Water Is Wet’, in *Third Book*, ed. by Sam Smith (Oxford: Oxford University Press, 2007). - -‘Nonexistent Not Found!’. - -</div> - -[^1]: [CSL BIBLIOGRAPHIC DATA ERROR: reference "nonexistent" not found.]. - -[^2]: [CSL STYLE ERROR: reference with no printed form.]. - -[^3]: *First Book* (Cambridge: Cambridge University Press, 2005). - -[^4]: *First Book*, p. 30. - -[^5]: *First Book*, p. 30, with suffix. - -[^6]: *First Book*; ‘Article’, *Journal of Generic Studies*, 6 (2006), 33–34 (p. 30); see also John Doe and Jenny Roe, ‘Why Water Is Wet’, in *Third Book*, ed. by Sam Smith (Oxford: Oxford University Press, 2007). - -[^7]: Doe and Roe, p. 12 and a citation without locators Doe and Roe. - -[^8]: See Doe, *First Book*, chap. 3; also Doe and Roe, pp. 34–35. - -[^9]: See Doe, *First Book*, pp. 34–35. - -[^10]: Some citations see Doe, *First Book*, chap. 3; Doe and Roe; Doe, ‘Article’, 33–34. - -[^11]: Doe, *First Book*, pp. 33, 35–37, and nowhere else. - -[^12]: Doe, *First Book* and nowhere else. - -[^13]: Like a citation without author: *First Book*, and now Doe with a locator ‘Article’, 33–34 (p. 44). - -[^14]: *See* Doe, *First Book*, p. 32. diff --git a/tests/markdown-citations.native b/tests/markdown-citations.native new file mode 100644 index 000000000..1cd4bd035 --- /dev/null +++ b/tests/markdown-citations.native @@ -0,0 +1,17 @@ +[Header 1 ("pandoc-with-citeproc-hs",[],[]) [Str "Pandoc",Space,Str "with",Space,Str "citeproc-hs"] +,BulletList + [[Para [Cite [Citation {citationId = "nonexistent", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "???"]]] + ,[Para [Cite [Citation {citationId = "nonexistent", citationPrefix = [], citationSuffix = [], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 0}] [Str "???"]]] + ,[Para [Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 0}] [Str "???"],Space,Str "says",Space,Str "blah."]] + ,[Para [Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [Str "p.",Space,Str "30"], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 0}] [Str "???"],Space,Str "says",Space,Str "blah."]] + ,[Para [Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [Str "p.",Space,Str "30,",Space,Str "with",Space,Str "suffix"], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 0}] [Str "???"],Space,Str "says",Space,Str "blah."]] + ,[Para [Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 0},Citation {citationId = "item2", citationPrefix = [], citationSuffix = [Space,Str "p.",Space,Str "30"], citationMode = SuppressAuthor, citationNoteNum = 0, citationHash = 0},Citation {citationId = "\1087\1091\1085\1082\1090\&3", citationPrefix = [Str "see",Space,Str "also"], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "???"],Space,Str "says",Space,Str "blah."]] + ,[Para [Str "In",Space,Str "a",Space,Str "note.",Note [Para [Cite [Citation {citationId = "\1087\1091\1085\1082\1090\&3", citationPrefix = [], citationSuffix = [Str "p.",Space,Str "12"], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 0}] [Str "???"],Space,Str "and",Space,Str "a",Space,Str "citation",Space,Str "without",Space,Str "locators",Space,Cite [Citation {citationId = "\1087\1091\1085\1082\1090\&3", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "???"],Str "."]]]] + ,[Para [Str "A",Space,Str "citation",Space,Str "group",Space,Cite [Citation {citationId = "item1", citationPrefix = [Str "see"], citationSuffix = [Space,Str "chap.",Space,Str "3"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0},Citation {citationId = "\1087\1091\1085\1082\1090\&3", citationPrefix = [Str "also"], citationSuffix = [Space,Str "p.",Space,Str "34-35"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "???"],Str "."]] + ,[Para [Str "Another",Space,Str "one",Space,Cite [Citation {citationId = "item1", citationPrefix = [Str "see"], citationSuffix = [Space,Str "p.",Space,Str "34-35"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "???"],Str "."]] + ,[Para [Str "And",Space,Str "another",Space,Str "one",Space,Str "in",Space,Str "a",Space,Str "note.",Note [Para [Str "Some",Space,Str "citations",Space,Cite [Citation {citationId = "item1", citationPrefix = [Str "see"], citationSuffix = [Space,Str "chap.",Space,Str "3"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0},Citation {citationId = "\1087\1091\1085\1082\1090\&3", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0},Citation {citationId = "item2", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "???"],Str "."]]]] + ,[Para [Str "Citation",Space,Str "with",Space,Str "a",Space,Str "suffix",Space,Str "and",Space,Str "locator",Space,Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [Space,Str "pp.",Space,Str "33,",Space,Str "35-37,",Space,Str "and",Space,Str "nowhere",Space,Str "else"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "???"],Str "."]] + ,[Para [Str "Citation",Space,Str "with",Space,Str "suffix",Space,Str "only",Space,Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [Space,Str "and",Space,Str "nowhere",Space,Str "else"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "???"],Str "."]] + ,[Para [Str "Now",Space,Str "some",Space,Str "modifiers.",Note [Para [Str "Like",Space,Str "a",Space,Str "citation",Space,Str "without",Space,Str "author:",Space,Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [], citationMode = SuppressAuthor, citationNoteNum = 0, citationHash = 0}] [Str "???"],Str ",",Space,Str "and",Space,Str "now",Space,Str "Doe",Space,Str "with",Space,Str "a",Space,Str "locator",Space,Cite [Citation {citationId = "item2", citationPrefix = [], citationSuffix = [Space,Str "p.",Space,Str "44"], citationMode = SuppressAuthor, citationNoteNum = 0, citationHash = 0}] [Str "???"],Str "."]]]] + ,[Para [Str "With",Space,Str "some",Space,Str "markup",Space,Cite [Citation {citationId = "item1", citationPrefix = [Emph [Str "see"]], citationSuffix = [Space,Str "p.",Space,Strong [Str "32"]], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "???"],Str "."]]] +,Header 1 ("references",[],[]) [Str "References"]] diff --git a/tests/mhra.csl b/tests/mhra.csl deleted file mode 100644 index fe34c8f84..000000000 --- a/tests/mhra.csl +++ /dev/null @@ -1,399 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<style xmlns="http://purl.org/net/xbiblio/csl" class="note" version="1.0" demote-non-dropping-particle="sort-only"> - <info> - <title>Modern Humanities Research Association (Note with Bibliography)</title> - <id>http://www.zotero.org/styles/mhra</id> - <link href="http://www.zotero.org/styles/mhra" rel="self"/> - <link href="http://www.mhra.org.uk/Publications/Books/StyleGuide/download.shtml" rel="documentation"/> - <author> - <name>Rintze Zelle</name> - <uri>http://twitter.com/rintzezelle</uri> - </author> - <contributor> - <name>Sebastian Karcher</name> - </contributor> - <summary>MHRA format with full notes and bibliography</summary> - <category field="generic-base"/> - <category citation-format="note"/> - <updated>2011-08-18T16:08:33+00:00</updated> - <rights>This work is licensed under a Creative Commons Attribution-Share Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/</rights> - </info> - <locale xml:lang="en"> - <terms> - <term name="et-al">and others</term> - <term name="editor" form="verb-short">ed. by</term> - <term name="edition" form="short">edn</term> - <term name="translator" form="verb-short">trans. by</term> - </terms> - </locale> - <macro name="author"> - <names variable="author"> - <name name-as-sort-order="first" and="text" sort-separator=", " delimiter=", " delimiter-precedes-last="always"/> - <label form="short" prefix=", " suffix="."/> - <substitute> - <names variable="editor"/> - <names variable="translator"/> - <text macro="title-note"/> - </substitute> - </names> - </macro> - <macro name="contributors-note"> - <names variable="author"> - <name and="text" sort-separator=", " delimiter=", " delimiter-precedes-last="never"/> - </names> - <text macro="recipient-note"/> - </macro> - <macro name="title-note"> - <choose> - <if type="bill book graphic legal_case motion_picture report song" match="any"> - <text variable="title" font-style="italic" text-case="title"/> - </if> - <else> - <text variable="title" prefix="‘" suffix="’" text-case="title"/> - </else> - </choose> - </macro> - <macro name="title-short"> - <choose> - <if disambiguate="true"> - <choose> - <if type="bill book graphic legal_case motion_picture report song" match="any"> - <text variable="title" font-style="italic" text-case="title" form="short"/> - </if> - <else> - <text variable="title" prefix="‘" suffix="’" text-case="title" form="short"/> - </else> - </choose> - </if> - </choose> - </macro> - <macro name="editor-translator"> - <group delimiter=", "> - <names variable="editor" delimiter=", "> - <label form="verb-short" text-case="lowercase" suffix=" "/> - <name and="text" delimiter=", " delimiter-precedes-last="never"/> - </names> - <choose> - <if variable="author editor" match="any"> - <names variable="translator" delimiter=", "> - <label form="verb-short" text-case="lowercase" suffix=" "/> - <name and="text" delimiter=", " delimiter-precedes-last="never"/> - </names> - </if> - </choose> - </group> - </macro> - <macro name="collection-title"> - <text variable="collection-title" text-case="title"/> - <text variable="collection-number" prefix=", "/> - </macro> - <macro name="locators-note"> - <choose> - <if type="article-journal"> - <text variable="volume"/> - </if> - <else-if type="bill book graphic legal_case motion_picture report song chapter paper-conference" match="any"> - <group delimiter=", "> - <text macro="edition-note"/> - <group> - <number variable="number-of-volumes" form="numeric"/> - <text term="volume" form="short" prefix=" " plural="true"/> - </group> - </group> - </else-if> - </choose> - </macro> - <macro name="volume"> - <choose> - <if type="article-journal"> - <text variable="volume"/> - </if> - <else-if type="bill book graphic legal_case motion_picture report song chapter paper-conference" match="any"> - <group delimiter=", "> - <text macro="edition-note"/> - <group> - <number variable="number-of-volumes" form="numeric"/> - <text term="volume" form="short" prefix=" " plural="true"/> - </group> - </group> - </else-if> - </choose> - </macro> - <macro name="issue-note"> - <choose> - <if type="article-journal"> - <choose> - <if variable="volume"> - <text macro="issued" prefix=" (" suffix=")"/> - </if> - <else> - <text macro="issued" prefix=", "/> - </else> - </choose> - </if> - <else-if variable="publisher-place publisher" match="any"> - <group prefix=" (" suffix=")" delimiter=", "> - <group delimiter=" "> - <choose> - <if variable="title" match="none"/> - <else-if type="thesis speech" match="any"> - <text variable="genre" prefix="unpublished "/> - </else-if> - </choose> - <text macro="event"/> - </group> - <text macro="publisher"/> - <text macro="issued"/> - </group> - </else-if> - <else> - <text macro="issued" prefix=", "/> - </else> - </choose> - </macro> - <macro name="locators-specific-note"> - <choose> - <if type="bill book graphic legal_case motion_picture report song chapter paper-conference" match="any"> - <choose> - <if is-numeric="volume"> - <number variable="volume" form="roman" font-variant="small-caps"/> - </if> - </choose> - </if> - </choose> - </macro> - <macro name="container-title-note"> - <choose> - <if type="chapter paper-conference" match="any"> - <text term="in" text-case="lowercase" suffix=" "/> - </if> - </choose> - <text variable="container-title" font-style="italic" text-case="title"/> - </macro> - <macro name="edition-note"> - <choose> - <if type="bill book graphic legal_case motion_picture report song chapter paper-conference" match="any"> - <choose> - <if is-numeric="edition"> - <group delimiter=" "> - <number variable="edition" form="ordinal"/> - <text term="edition" form="short"/> - </group> - </if> - <else> - <text variable="edition"/> - </else> - </choose> - </if> - </choose> - </macro> - <macro name="editor-note"> - <names variable="editor"> - <name and="text" sort-separator=", " delimiter=", "/> - <label form="short" prefix=", " suffix="."/> - </names> - </macro> - <macro name="translator-note"> - <names variable="translator"> - <name and="text" sort-separator=", " delimiter=", "/> - <label form="verb-short" prefix=", " suffix="."/> - </names> - </macro> - <macro name="recipient-note"> - <names variable="recipient" delimiter=", "> - <label form="verb" prefix=" " text-case="lowercase" suffix=" "/> - <name and="text" delimiter=", "/> - </names> - </macro> - <macro name="recipient-short"> - <names variable="recipient"> - <label form="verb" prefix=" " text-case="lowercase" suffix=" "/> - <name form="short" and="text" delimiter=", "/> - </names> - </macro> - <macro name="contributors-short"> - <names variable="author"> - <name form="short" and="text" sort-separator=", " delimiter=", " delimiter-precedes-last="never"/> - <substitute> - <names variable="editor"/> - <names variable="translator"/> - </substitute> - </names> - <text macro="recipient-short"/> - </macro> - <macro name="interviewer-note"> - <names variable="interviewer" delimiter=", "> - <label form="verb" prefix=" " text-case="lowercase" suffix=" "/> - <name and="text" delimiter=", "/> - </names> - </macro> - <macro name="locators-newspaper"> - <choose> - <if type="article-newspaper"> - <group delimiter=", "> - <group> - <text variable="edition" suffix=" "/> - <text term="edition" prefix=" "/> - </group> - <group> - <text term="section" suffix=" "/> - <text variable="section"/> - </group> - </group> - </if> - </choose> - </macro> - <macro name="event"> - <group> - <text term="presented at" suffix=" "/> - <text variable="event"/> - </group> - </macro> - <macro name="publisher"> - <group delimiter=": "> - <text variable="publisher-place"/> - <text variable="publisher"/> - </group> - </macro> - <macro name="issued"> - <choose> - <if type="graphic report article-newspaper" match="any"> - <date variable="issued"> - <date-part name="day" suffix=" "/> - <date-part name="month" suffix=" "/> - <date-part name="year"/> - </date> - </if> - <else-if type="bill book graphic legal_case motion_picture report song thesis chapter paper-conference" match="any"> - <date variable="issued"> - <date-part name="year"/> - </date> - </else-if> - <else> - <date variable="issued"> - <date-part name="year"/> - </date> - </else> - </choose> - </macro> - <macro name="pages"> - <choose> - <if type="article-journal"> - <text variable="page" prefix=", "/> - </if> - <else> - <choose> - <if variable="volume"> - <text variable="page" prefix=", "/> - </if> - <else> - <label variable="page" form="short" prefix=", " suffix=" "/> - <text variable="page"/> - </else> - </choose> - </else> - </choose> - </macro> - <macro name="point-locators"> - <text macro="pages"/> - <choose> - <if variable="page"> - <group prefix=" (" suffix=")"> - <label variable="locator" form="short" suffix=" "/> - <text variable="locator"/> - </group> - </if> - <else> - <label variable="locator" form="short" prefix=", " suffix=" "/> - <text variable="locator"/> - </else> - </choose> - </macro> - <macro name="archive-note"> - <group delimiter=", "> - <text variable="archive_location"/> - <text variable="archive"/> - <text variable="archive-place"/> - </group> - </macro> - <macro name="access-note"> - <group delimiter=", "> - <choose> - <if type="graphic report" match="any"> - <text macro="archive-note" prefix=", "/> - </if> - <else-if type="bill book graphic legal_case motion_picture report song article-journal article-magazine article-newspaper thesis chapter paper-conference" match="none"> - <text macro="archive-note" prefix=", "/> - </else-if> - </choose> - </group> - <choose> - <if variable="DOI"> - <text variable="DOI" prefix=" <doi:" suffix=">"/> - </if> - <else> - <choose> - <if variable="URL"> - <text variable="URL" prefix=" <" suffix=">"/> - <group prefix=" [" suffix="]"> - <text term="accessed" text-case="lowercase"/> - <date variable="accessed"> - <date-part name="day" prefix=" "/> - <date-part name="month" prefix=" "/> - <date-part name="year" prefix=" "/> - </date> - </group> - </if> - </choose> - </else> - </choose> - </macro> - <citation et-al-min="4" et-al-use-first="1" et-al-subsequent-min="4" et-al-subsequent-use-first="1" disambiguate-add-names="true" disambiguate-add-givenname="true"> - <layout prefix="" suffix="." delimiter="; "> - <choose> - <if position="subsequent"> - <text macro="contributors-short"/> - <text macro="title-short" prefix=", "/> - <text macro="locators-specific-note" prefix=", "/> - <text macro="point-locators"/> - </if> - <else> - <group delimiter=", "> - <text macro="contributors-note"/> - <text macro="title-note"/> - <text macro="container-title-note"/> - <text macro="editor-translator"/> - <text macro="collection-title"/> - <text macro="locators-note"/> - </group> - <text macro="issue-note"/> - <text macro="locators-specific-note" prefix=", "/> - <text macro="locators-newspaper" prefix=", "/> - <text macro="point-locators"/> - <text macro="access-note"/> - </else> - </choose> - </layout> - </citation> - <bibliography hanging-indent="true" et-al-min="6" et-al-use-first="6" subsequent-author-substitute="---"> - <sort> - <key macro="author"/> - <key variable="title"/> - </sort> - <layout suffix="."> - <group delimiter=", "> - <text macro="author"/> - <text macro="title-note"/> - <text macro="container-title-note"/> - <text macro="editor-translator"/> - <text macro="collection-title"/> - <text macro="volume"/> - </group> - <text macro="issue-note"/> - <text macro="locators-specific-note" prefix=", "/> - <text macro="locators-newspaper" prefix=", "/> - <text macro="pages"/> - <text macro="access-note"/> - </layout> - </bibliography> -</style>
\ No newline at end of file diff --git a/windows/make-windows-installer.bat b/windows/make-windows-installer.bat index 12d873b70..998da6775 100644 --- a/windows/make-windows-installer.bat +++ b/windows/make-windows-installer.bat @@ -2,7 +2,6 @@ cd ..
rem cabal update
cabal-dev clean
-cabal-dev install --reinstall --force-reinstall --flags="embed_data_files" citeproc-hs
if %errorlevel% neq 0 exit /b %errorlevel%
cabal-dev install --reinstall --force-reinstall --flags="embed_data_files"
if %errorlevel% neq 0 exit /b %errorlevel%
|