aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml1
-rw-r--r--README105
-rw-r--r--data/default.csl458
-rwxr-xr-xmake_osx_package.sh1
-rw-r--r--pandoc.cabal17
-rw-r--r--pandoc.hs80
-rw-r--r--src/Text/Pandoc/Biblio.hs216
-rw-r--r--src/Text/Pandoc/Options.hs7
-rw-r--r--src/Text/Pandoc/Readers/LaTeX.hs8
-rw-r--r--src/Text/Pandoc/Readers/Markdown.hs5
-rw-r--r--src/Text/Pandoc/Readers/TeXMath.hs84
-rw-r--r--src/Text/Pandoc/Writers/LaTeX.hs16
-rw-r--r--tests/Tests/Old.hs18
-rw-r--r--tests/Tests/Readers/LaTeX.hs7
-rw-r--r--tests/Tests/Writers/LaTeX.hs7
-rw-r--r--tests/biblio.bib26
-rw-r--r--tests/chicago-author-date.csl458
-rw-r--r--tests/ieee.csl302
-rw-r--r--tests/markdown-citations.chicago-author-date.txt51
-rw-r--r--tests/markdown-citations.ieee.txt51
-rw-r--r--tests/markdown-citations.mhra.txt73
-rw-r--r--tests/markdown-citations.native17
-rw-r--r--tests/mhra.csl399
-rw-r--r--windows/make-windows-installer.bat1
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:
diff --git a/README b/README
index 7a2b01f49..f85e62e14 100644
--- a/README
+++ b/README
@@ -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="&#8212;&#8212;&#8212;" 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)
diff --git a/pandoc.hs b/pandoc.hs
index a16ffbc3c..5b0250836 100644
--- a/pandoc.hs
+++ b/pandoc.hs
@@ -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="&#8212;&#8212;&#8212;" 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=" &lt;doi:" suffix="&gt;"/>
- </if>
- <else>
- <choose>
- <if variable="URL">
- <text variable="URL" prefix=" &lt;" suffix="&gt;"/>
- <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%