emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Denis Maier <denismaier@mailbox.org>
To: "Bruce D'Arcus" <bdarcus@gmail.com>,
	"András Simonyi" <andras.simonyi@gmail.com>,
	"emacs-orgmode@gnu.org" <emacs-orgmode@gnu.org>
Subject: Re: wip-cite status question and feedback
Date: Fri, 30 Apr 2021 23:47:56 +0200	[thread overview]
Message-ID: <897892c5-db81-af4e-f265-c89f9d4974b1@mailbox.org> (raw)
In-Reply-To: <87mttfuck9.fsf@nicolasgoaziou.fr>

Hi Nicolas,

thanks for all you work on this one. I don't have a setup where I can 
test this, but from what I can tell this looks quite good already.

Am 30.04.2021 um 15:28 schrieb Nicolas Goaziou:
[...]

> 
> OK. I wrote a POC, and I would appreciate some feedback about it.
> 
> In order to test it, one need to evaluate the following, from an
> up-to-date "wip-cite-new" branch:
> 
> --8<---------------cut here---------------start------------->8---
> (defun org-cite--swap-punctuation (object info)
>    "Move punctuation following OBJECT before it, if applicable.
> 
> When OBJECT is followed by some terminal punctuation character, such as
> a period or a question mark, and preceded by some text, move the punctuation
> at the end of the previous text.  If that text ends with a double quote,
> move the punctuation before that quote, too.
> 
> INFO is the export state, as a property list."
>    (let ((next (org-export-get-next-element object info))
>          (previous
>           (org-last
>            (org-element-map (org-export-get-previous-element object info)
>                'plain-text
>              #'identity info)))
>          (punct-re
>           (rx string-start
>               (group (or "." "!" "?" "..." "…"))
>               (or eol (any " " "\t")))))
>      (when (and previous
>                 (stringp next)
>                 (string-match punct-re next))
>        (let* ((punct (match-string 1 next))
>               (new-next (substring next (match-end 1)))
>               (quote-re
>                (rx (opt (and (group (or string-start (not (any "." "!" "?" "…"))))
>                              (group "\"")))
>                    (group (0+ (any " " "\t")))
>                    string-end))
>               (new-previous
>                (replace-regexp-in-string
>                 quote-re (concat "\\1" punct "\\2\\3") previous)))
>          (org-element-set-element next new-next)
>          (org-element-set-element previous new-previous)))))
> 
> (defun org-cite-wrap-citation (citation info &optional move-punctuation)
>    "Wrap an anonymous inline footnote around CITATION object in the parse tree.
> 
> INFO is the export state, as a property list.  When optional argument
> MOVE-PUNCTUATION is non-nil, move punctuation character following citation before
> it, when applicable.  If a quotation mark precedes the citation, move
> punctuation before it, too.
> 
> The parse tree is modified by side-effect."
>    (let ((footnote
>           (list 'footnote-reference
>                 (list :label nil
>                       :type 'inline
>                       :contents-begin (org-element-property :begin citation)
>                       :contents-end (org-element-property :end citation)
>                       :post-blank (org-element-property :post-blank citation)))))
>      ;; Remove any white space before citation.
>      (org-cite--set-previous-post-blank citation 0 info)
>      ;; Possibly swap punctuation around citation.
>      (when move-punctuation (org-cite--swap-punctuation citation info))
>      ;; Footnote swallows citation.
>      (org-element-insert-before footnote citation)
>      (org-element-adopt-elements footnote
>      (org-element-extract-element citation))))
> 
> ;; test citation processor
> 
> (defun test-export-citation (citation nil nil info)
>    (org-cite-wrap-citation citation info t)
>    "...")
> 
> (org-cite-register-processor 'test
>    :export-citation #'test-export-citation)
> --8<---------------cut here---------------end--------------->8---
> 
> For example, the following document:
> 
> --8<---------------cut here---------------start------------->8---
> #+cite_export: test
> 
> This is a test [cite:@a].
> 
> This is a test [cite:@a]?
> 
> This is a test [cite:@a]...
> 
> This is a "test" [cite:@a].
> 
> This is a "test." [cite:@a].
> 
> This is a *"test"* [cite:@a].
> 
> This is a *some /covoluted/ "test"* [cite:@a].
> 
> # Do nothing in the following cases.
> 
> This is a test [cite:@a]
> 
> This is a test. [cite:@a]
> 
> [cite:@a].
> 
> This is a "test" [cite:@a]
> --8<---------------cut here---------------end--------------->8---
> 
> would become in ASCII export (without the uninteresting footnotes part):
> 
> --8<---------------cut here---------------start------------->8---
> This is a test.[1]
> 
> This is a test?[2]
> 
> This is a test…[3]
> 
> This is a « test. »[4]
> 
> This is a « test. ».[5]
> 
> This is a *« test. »*[6]
> 
> This is a *some /covoluted/ « test. »*[7]
> 
> This is a test[8]
> 
> This is a test.[9]
> 
> [10].
> 
> This is a « test »[11]
> --8<---------------cut here---------------end--------------->8---
> 
> Is it what you had in mind?

Yes, this should be equivalent to the behaviour in pandoc.

However, as I've said before, this behaviour is only correct in American 
English. TO quuote the Chicago Manual of Style 6.9: "In an alternative 
system, sometimes called British Style (as described in the /New Oxford 
Style Manual ...) ... only those punctuation points that appeared in the 
original material are included within the quotation marks." The same 
would be correct for German. Do you have an idea if/how this could be 
implemented?

> 
> Also, I have questions about punctuation.
> 
> Currently, these changes only apply to terminal punctuation I could
> think of: . ! ? ... …
> 
> Should the above apply to any punctuation, i.e., [:punct:]? Should it be
> limited to a different set of elements instead? If so which one? Should
> it be configurable?

Again the Chicago Manual, 6.10: "Colons and semicolons---unlike periods 
and commas---follow closing quotation marks; question marks and 
exclamation points follow closing quoation marks unless they belong 
within the quoted matter."

I don't know if there is a general rule and how much of this should be 
configurable. How costly would that be?

> 
> Regards,
> 



  reply	other threads:[~2021-04-30 22:01 UTC|newest]

Thread overview: 139+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-07 15:15 Bruce D'Arcus
2020-04-07 17:51 ` Nicolas Goaziou
2020-04-07 18:27   ` Bruce D'Arcus
2020-04-07 18:31     ` Bruce D'Arcus
2020-04-07 21:13     ` Joost Kremers
2020-04-08  0:01       ` Bruce D'Arcus
2020-04-08  9:16         ` Joost Kremers
2020-04-08  9:32     ` Nicolas Goaziou
2020-04-08 12:19       ` Bruce D'Arcus
2020-04-08 13:39         ` John Kitchin
2020-04-08 16:12           ` Bruce D'Arcus
2020-04-09  7:38         ` Albert Krewinkel
2020-04-09  9:30           ` Bruce D'Arcus
2020-04-09  9:46             ` Bruce D'Arcus
2020-04-09 10:05               ` Bruce D'Arcus
2020-04-09 23:17                 ` Nicolas Goaziou
2020-04-10  1:17                   ` Bruce D'Arcus
2020-04-10  5:38             ` Albert Krewinkel
2020-04-11 11:41       ` Bruce D'Arcus
2020-04-13 12:05       ` Gustav Wikström
2020-04-13 12:33         ` Bruce D'Arcus
2020-05-24 12:12           ` Bastien
2020-05-24 13:17             ` Bruce D'Arcus
2020-05-29 21:59               ` András Simonyi
2020-05-29 22:24                 ` Bruce D'Arcus
2020-05-29 22:58                 ` Bruce D'Arcus
2020-06-03 14:40                   ` Bastien
2020-06-03 14:53                     ` Bruce D'Arcus
2020-12-14 21:24                       ` Bruce D'Arcus
2021-03-24 13:22                       ` Bruce D'Arcus
2021-03-24 18:27                         ` M. ‘quintus’ Gülker
2021-04-11 23:15                           ` Bruce D'Arcus
2021-04-12 13:19                             ` Nicolas Goaziou
2021-04-12 18:53                               ` András Simonyi
2021-04-16 17:05                               ` András Simonyi
2021-04-16 17:23                                 ` Bruce D'Arcus
2021-04-18 13:11                                 ` Nicolas Goaziou
2021-04-18 13:35                                   ` Ihor Radchenko
2021-04-18 13:37                                     ` Bruce D'Arcus
2021-04-21 19:57                                     ` John Kitchin
2021-04-21 20:09                                       ` Bruce D'Arcus
2021-04-21 20:57                                         ` John Kitchin
2021-04-21 20:26                                   ` John Kitchin
2021-04-21 20:54                                     ` Bruce D'Arcus
2021-04-22  2:47                                     ` Timothy
2021-04-22 12:07                                       ` Bruce D'Arcus
2021-04-22 12:34                                         ` Timothy
2021-04-21 21:47                                   ` András Simonyi
2021-04-21 23:51                                     ` Nicolas Goaziou
2021-04-22  0:01                                       ` Bruce D'Arcus
2021-04-22  0:15                                         ` Nicolas Goaziou
2021-04-23 11:49                                           ` Nicolas Goaziou
2021-04-23 12:55                                             ` András Simonyi
2021-04-23 13:10                                               ` Bruce D'Arcus
2021-04-23 13:24                                                 ` Bruce D'Arcus
2021-04-23 14:50                                                   ` András Simonyi
2021-04-23 22:08                                                   ` Bruce D'Arcus
2021-04-24 17:37                                                   ` M. ‘quintus’ Gülker
2021-04-24 17:47                                                   ` Nicolas Goaziou
2021-04-24 18:39                                                     ` Bruce D'Arcus
2021-04-26 14:54                                                       ` Bruce D'Arcus
2021-04-26 20:35                                                         ` Denis Maier
2021-04-27 10:12                                                           ` Bruce D'Arcus
2021-04-27 10:20                                                             ` Timothy
2021-04-27 11:44                                                             ` Denis Maier
2021-04-27 12:32                                                               ` Bruce D'Arcus
2021-04-27 13:58                                                                 ` Denis Maier
2021-04-27 14:07                                                                   ` Bruce D'Arcus
2021-04-27 14:50                                                                     ` Denis Maier
2021-04-30 13:28                                                       ` Nicolas Goaziou
2021-04-30 21:47                                                         ` Denis Maier [this message]
2021-05-01 11:09                                                           ` Nicolas Goaziou
2021-05-01 13:26                                                           ` Bruce D'Arcus
2021-05-02 21:58                                                             ` Denis Maier
2021-05-02 22:18                                                               ` Bruce D'Arcus
2021-05-02 23:30                                                                 ` Bruce D'Arcus
2021-05-05 13:46                                                                 ` Bruce D'Arcus
2021-05-05 18:14                                                                   ` M. ‘quintus’ Gülker
2021-05-05 18:27                                                                     ` Bruce D'Arcus
2021-05-06 17:05                                                                       ` M. ‘quintus’ Gülker
2021-05-06  8:08                                                                     ` Denis Maier
2021-04-24 13:14                                               ` Nicolas Goaziou
2021-04-23 12:03                                     ` Nicolas Goaziou
2021-04-23 13:34                                       ` András Simonyi
2021-04-17 19:13                               ` M. ‘quintus’ Gülker
2021-04-18 16:17                                 ` Nicolas Goaziou
2021-04-20 13:32                                   ` Matt Price
2021-04-21 17:07                                     ` Nicolas Goaziou
2021-04-21 17:53                                       ` Bruce D'Arcus
2020-04-10  9:29 denis.maier.lists
2020-04-10 12:22 ` Bruce D'Arcus
2020-04-10 22:56 ` Nicolas Goaziou
2020-04-11 21:42   ` denis.maier.lists
2020-04-11 22:05     ` Bruce D'Arcus
2020-04-12 10:38       ` Nicolas Goaziou
2020-04-12 11:15         ` Bruce D'Arcus
2020-04-12 14:02           ` Nicolas Goaziou
2020-04-12 14:25             ` Bruce D'Arcus
2020-04-12 15:32               ` Nicolas Goaziou
2020-04-12 15:44                 ` Bruce D'Arcus
2020-04-12 15:57                   ` Nicolas Goaziou
2020-04-12 17:17                     ` Bruce D'Arcus
2020-04-12 20:49                 ` denis.maier.lists
2020-04-12 22:19                   ` Nicolas Goaziou
2020-04-13  8:33                     ` Stefan Nobis
2020-04-13 10:02                       ` Denis Maier
2020-04-13 10:11                         ` denis.maier.lists
2020-04-13 10:05                       ` Bruce D'Arcus
2020-04-13 10:14                       ` denis.maier.lists
2020-04-13  9:58                     ` Bruce D'Arcus
2020-04-13 10:09                     ` denis.maier.lists
2020-04-13 10:10                     ` Joost Kremers
2020-04-13 10:46                       ` Stefan Nobis
2020-04-15  5:54                       ` Richard Lawrence
2020-04-15 10:07                         ` Joost Kremers
2020-04-18  9:34                           ` Richard Lawrence
2020-04-18 10:56                         ` Bruce D'Arcus
2020-04-18 12:48                           ` Richard Lawrence
2020-04-18 13:17                             ` Bruce D'Arcus
2020-04-18 13:22                               ` Bruce D'Arcus
2020-04-18 20:23                                 ` Denis Maier
2020-04-18 20:28                                 ` denis.maier.lists
2020-04-19  9:11                               ` Richard Lawrence
2020-04-25 16:19                                 ` Nicolas Goaziou
2020-04-25 17:00                                   ` Bruce D'Arcus
2020-04-25 20:03                                     ` Nicolas Goaziou
2020-04-25 21:18                                       ` Bruce D'Arcus
2020-05-01 17:38                                         ` Richard Lawrence
2020-05-01 17:54                                           ` Bruce D'Arcus
2020-05-02 14:06                                             ` Nicolas Goaziou
     [not found]                                               ` <2fbf14cf-ae8c-4f7c-27f7-33771aa99492@mailbox.org>
2020-05-02 16:34                                                 ` Nicolas Goaziou
2020-05-02 17:24                                                   ` Denis Maier
2020-05-02 13:13                                           ` Nicolas Goaziou
2020-05-02 13:45                                             ` Bruce D'Arcus
2020-05-02 20:45                                             ` Richard Lawrence
2020-04-29  9:14                                   ` Denis Maier
2020-05-02  9:51                                     ` Nicolas Goaziou
2020-05-02 11:53                                       ` Bruce D'Arcus
2020-04-18 20:38                           ` Joost Kremers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=897892c5-db81-af4e-f265-c89f9d4974b1@mailbox.org \
    --to=denismaier@mailbox.org \
    --cc=andras.simonyi@gmail.com \
    --cc=bdarcus@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --subject='Re: wip-cite status question and feedback' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Code repositories for project(s) associated with this inbox:

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).