From f9c6167ad123032b67f300b2478466063e0ac6f6 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Wed, 21 Oct 2020 22:23:21 -0700 Subject: citeproc - improved removal of final period... ...in citations inside notes in note-based styles. These citations are put in parentheses, but the final period must be removed. See jgm/citeproc#20 --- src/Text/Pandoc/Citeproc.hs | 13 ++++++++----- test/command/citeproc-20.md | 25 +++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 test/command/citeproc-20.md diff --git a/src/Text/Pandoc/Citeproc.hs b/src/Text/Pandoc/Citeproc.hs index c00c8ca09..ec7954d47 100644 --- a/src/Text/Pandoc/Citeproc.hs +++ b/src/Text/Pandoc/Citeproc.hs @@ -524,11 +524,14 @@ deNote (Note bs) = Note $ walk go bs go x = x deNote x = x --- Note: we can't use dropTextWhileEnd because this would --- remove the final period on abbreviations like Ibid. --- But removing a final Str "." is safe. +-- Note: we can't use dropTextWhileEnd indiscriminately, +-- because this would remove the final period on abbreviations like Ibid. +-- But it turns out that when the note citation ends with Ibid. +-- (or Ed. etc.), the last inline will be Str "" as a result of +-- the punctuation-fixing mechanism that removes the double '.'. removeFinalPeriod :: [Inline] -> [Inline] removeFinalPeriod ils = case lastMay ils of - Just (Str ".") -> initSafe ils - _ -> ils + Just (Str t) + | T.takeEnd 1 t == "." -> initSafe ils ++ [Str (T.dropEnd 1 t)] + _ -> ils diff --git a/test/command/citeproc-20.md b/test/command/citeproc-20.md new file mode 100644 index 000000000..0c4f7abf2 --- /dev/null +++ b/test/command/citeproc-20.md @@ -0,0 +1,25 @@ +``` +% pandoc --citeproc -t plain +Lorem ipsum dolor sit amet^[Consectetur adipisicing elit: «sed do eiusmod tempor incididunt» [@doe_1989, 15].]. + +--- +csl: command/chicago-fullnote-bibliography.csl +suppress-bibliography: true +references: +- id: doe_1989 + author: + - family: Doe + given: John + issued: + - year: 1989 + publisher: ABC + publisher-place: New York + title: Tempor + type: book +... +^D +Lorem ipsum dolor sit amet[1]. + +[1] Consectetur adipisicing elit: «sed do eiusmod tempor incididunt» +(John Doe, Tempor (New York: ABC, 1989), 15). +``` -- cgit v1.2.3