From: Nicolas Goaziou <firstname.lastname@example.org>
To: Denis Maier <email@example.com>
Cc: Bruce D'Arcus <firstname.lastname@example.org>, Org Mode List <email@example.com>
Subject: Re: [wip-cite-new] Adjust punctuation around citations
Date: Sat, 15 May 2021 13:56:28 +0200 [thread overview]
Message-ID: <firstname.lastname@example.org> (raw)
In-Reply-To: <email@example.com> (Denis Maier's message of "Fri, 14 May 2021 10:42:28 +0200")
Denis Maier <firstname.lastname@example.org> writes:
> Am 13.05.2021 um 23:33 schrieb Nicolas Goaziou:
>> RULE is a triplet of symbols (PUNCT POSITION RELATIVE):
>> PUNCT is the desired location of the punctuation with regards
>> to the
>> quotation, if any. It may be `inside', `outside', or`strict', the latter
>> meaning the punctuation should not be moved.
>> POSITION is the desired location of the citation with regards
>> to the
>> quotation, if any. It may be `inside' or `outside'.
>> RELATIVE is the relative position of the citation with regards
>> to the closest
>> punctuation. It may be `after' or `before'.
>> For example,
>> (inside outside after) corresponds to American typography;
>> (strict outside after) corresponds to German typography;
>> (strict inside before) corresponds to French typography.
> These things are not only language dependent, but depend also on the
> chosen citation style. E.g. with in-text styles you'll have (outside
> outside before) in German, and American typography, in French likely
> as well.
Since the location of the punctuation is meaningful in French (and
German), I have doubts about (outside ...) being appropriate. More on
> So, perhaps another setting:
> #+type-of-citation-style: in-text
> #+type-of-citation-style: note
> And ideally this RULE should be configurable directly as well:
> #+punct-moving-rule: strict inside before
>> INFO is the export state, as a property list.
>> Optional argument PUNCT is a list of punctuation marks to be
>> When nil, it includes the following: \".\" \",\" \";\" \":\" \"!\" and \"?\".
> Here as well, it should be possible to configure these on a user
> level. Something like:
> #+moved-punctuation: ,.?!
At the moment, the `org-cite-adjust-punctuation' function is designed
with author-year to note conversion in mind, not the other way. I don't
have enough examples of the opposite transformation to even be sure the
current interface would be appropriate. I even believe this is not often
possible, as it would imply rewording, i.e., add information that is not
present in the original document.
This doesn't seem to be a limitation, though. This feature is useful for
users having to switch between author-year and note styles. The rule of
thumb is to always write author-year in source.
In any case, this explains why the docstring has a bias. I updated it to
insist on the fact that these are rules for author-year to note
Also, this function is not meant to be accessible to the end user. It is
called from the processor, which knows the type (or style) of the
citation. It may also choose not to use this function. So, I agree with
Bruce D'Arcus: selecting an appropriate rule and punctuation ought to
happen at that level.
More importantly, I don't think fine-grain configuration is required.
For specific needs, this "smart" feature should be disabled, and
elements (punctuation, citation) positioned manually. But, again, if
configuration is needed, the processor should provide it, e.g., through
variables, not Org Cite. For example, a defcustom could offer to 1) not
use this feature 2) rely on "language" keyword 3) apply a user-defined
rule and punctuation set.
What would be nice, however, would be an association between language
and default rules and punctuation characters.
Meanwhile, I modified `org-cite-adjust-punctuation' function a bit. Here
is its new docstring.
Adjust punctuation around CITATION object.
When CITATION follows a quotation, or when there is punctuation next to it,
the function tries to normalize the location of punctuation and citation
according to some RULE.
RULE is a triplet of symbols (PUNCTUATION CITE ORDER):
PUNCTUATION is the desired location of the punctuation with regards to the
quotation, if any. It may be `inside', `outside', or`static'. When set to
`static', the punctuation is not moved.
CITE is the desired location of the citation with regards to the quotation
mark, if any. It may be `inside', `outside', or `same'. When set to `same',
the citation is moved on the same side as the punctuation, but does not move
if there is punctuation on both sides or on none.
ORDER is the relative position of the citation with regards to the closest
punctuation. It may be `after' or `before'.
For example, when changing from author-date to note style,
(inside outside after) corresponds to American typography;
(static outside after) corresponds to German typography;
(static same before) corresponds to French typography.
INFO is the export state, as a property list.
Optional argument PUNCT is a list of punctuation marks to be considered.
When nil, it includes the following: \".\" \",\" \";\" \":\" \"!\" and \"?\".
When optional argument ADD-SPACE is non-nil, add a space before citation. This
is useful, for example, when switching from note to author-year style.
Parse tree is modified by side-effect.
Note: if you are calling both `org-cite-adjust-punctuation' and
`org-cite-wrap-citation' on the same object, call `org-cite-adjust-punctuation'
Note that previous `strict' became `static', and I introduced a `same'
value for the second rule. I also added a new ADD-SPACE optional
argument as an attempt to ease note to author-year style conversion.
As written already in another message, you can test the following
(defun org-test--language-to-rule (info)
(pcase (plist-get info :language)
("en-us" '(inside outside after))
((or "en" "de" "en-gb") '(static outside after))
("fr" '(static same before))
(defun org-test-export-citation (citation style _backend info)
(org-cite-adjust-punctuation citation '(outside outside before) info nil t)
"(John Doe, 1999)")
(pcase (org-test--language-to-rule info)
(rule (org-cite-adjust-punctuation citation rule info)))
(unless (org-cite-inside-footnote-p citation)
(org-cite-wrap-citation citation info))
next prev parent reply other threads:[~2021-05-15 11:57 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-13 21:33 [wip-cite-new] Adjust punctuation around citations Nicolas Goaziou
2021-05-13 22:14 ` Denis Maier
2021-05-13 23:21 ` Bruce D'Arcus
2021-05-14 8:31 ` Denis Maier
2021-05-14 10:26 ` Nicolas Goaziou
2021-05-14 12:37 ` Bruce D'Arcus
2021-05-14 8:42 ` Denis Maier
2021-05-14 12:28 ` Bruce D'Arcus
2021-05-15 11:56 ` Nicolas Goaziou [this message]
2021-05-15 12:03 ` Bruce D'Arcus
2021-05-15 12:43 ` Bruce D'Arcus
2021-05-16 21:29 ` Denis Maier
2021-05-16 21:38 ` Bruce D'Arcus
2021-05-16 22:03 ` Denis Maier via General discussions about Org-mode.
2021-05-16 22:24 ` Bruce D'Arcus
2021-05-17 8:08 ` Denis Maier
2021-06-05 21:35 ` Nicolas Goaziou
2021-06-05 21:45 ` Bruce D'Arcus
2021-06-05 22:00 ` Denis Maier
2021-06-12 9:39 ` Nicolas Goaziou
2021-06-12 21:41 ` Bruce D'Arcus
2021-06-12 22:04 ` Nicolas Goaziou
2021-06-12 22:12 ` Bruce D'Arcus
2021-06-13 8:22 ` Denis Maier
2021-06-13 21:54 ` Denis Maier
2021-06-13 22:04 ` Bruce D'Arcus
2021-06-13 22:23 ` Denis Maier
2021-06-13 22:47 ` Bruce D'Arcus
2021-06-14 11:45 ` Denis Maier
2021-06-14 11:51 ` Denis Maier
2021-06-14 23:37 ` Bruce D'Arcus
2021-06-14 23:41 ` Bruce D'Arcus
2021-06-20 7:41 ` Nicolas Goaziou
2021-06-20 16:37 ` Bruce D'Arcus
2021-06-20 17:17 ` Nicolas Goaziou
2021-06-21 8:12 ` Denis Maier
2021-06-21 8:45 ` Nicolas Goaziou
2021-06-21 9:49 ` Denis Maier
2021-06-21 10:07 ` Denis Maier
2021-05-14 13:39 ` Denis Maier
2021-05-15 11:43 ` Nicolas Goaziou
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:
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
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).