From: Gerion Entrup <gerion.entrup@flump.de>
To: ntg-context@ntg.nl
Subject: [NTG-context] Re: Combine lua and btx setup, was: Re: Customize citation format of a bibliography (use the short form as reference format)
Date: Thu, 25 Apr 2024 17:40:12 +0200 [thread overview]
Message-ID: <3091740.CbtlEUcBR6@falbala> (raw)
In-Reply-To: <3292943.44csPzL39Z@falbala>
[-- Attachment #1.1: Type: text/plain, Size: 8052 bytes --]
I solved it, although it's kinda hacky. I'm pretty sure that
publications.citevariants.short is not meant to be called directly.
Do you know why `context.getdetail(dataset, tag, "author")` does not work in render_cite?
It always returns nil.
```
\setupinteraction[state=start]
\startbuffer[testdata]
@Book{knuth1,
author = {Donald E. Knuth},
title = {TEX and METAFONT. New directions in typesetting},
year = {1979},
publisher = {Addison-Wesley},
}
@Article{someother,
author = {Some Person and Some Otherperson},
title = {Another title},
year = {1900},
}
\stopbuffer
% enable tracing
\enabletrackers[publications, publications.crossref, publications.details, publications.cite, publications.strings]
\usebtxdataset[main][testdata.buffer]
\usebtxdefinitions[aps]
\setupbtx[dataset=main]
\definebtxrendering[bibrendering][aps][dataset=main, numbering=short]
\setupbtxlist[aps][
alternative=b,
distance=.5em,
]
\definebtx[aps:cite:special][aps:cite]
\startluacode
function render_cite(dataset, tag, righttext)
local luadata = publications.datasets[dataset].luadata
local entry = luadata[tag]
local extrasign = ""
if entry.author:lower():find("knuth") then
extrasign = ">"
end
context("[" .. extrasign)
print(righttext)
publications.citevariants.short({dataset = dataset, reference = tag, variant = "short", righttext = righttext})
context("]")
end
\stopluacode
\startsetups btx:aps:cite:special
\btxcitereference
\ctxlua{render_cite([==[\currentbtxdataset]==], [==[\currentbtxtag]==], [==[\currentbtxrighttext]==])}
\stopsetups
\setupbtx[aps:cite][alternative=special]
\starttext
\def\comma{,}
Knuth developed \TeX~\cite[knuth1]
Several persons said something~\cite[someother].
\placelistofpublications[bibrendering]
\stoptext
```
Gerion
Am Dienstag, 23. April 2024, 16:03:50 MESZ schrieb Gerion Entrup:
> Here is a solution for the first part of my question. This is based on
> https://www.mail-archive.com/ntg-context@ntg.nl/msg101156.html
> and try and error based on publ-imp-aps.mkvi and publ-imp-apa.mkvi:
>
> It display now the citation _and_ numbering labels in the short form:
> ```
> \setupinteraction[state=start]
>
> \startbuffer[testdata]
> @Book{knuth1,
> author = {Donald E. Knuth},
> title = {TEX and METAFONT. New directions in typesetting},
> year = {1979},
> publisher = {Addison-Wesley},
> }
> @Article{someother,
> author = {Some Person and Some Otherperson},
> title = {Another title},
> year = {1900},
> }
> \stopbuffer
>
> % enable tracing
> \enabletrackers[publications, publications.crossref, publications.details, publications.cite, publications.strings]
>
> \usebtxdataset[main][testdata.buffer]
> \usebtxdefinitions[aps]
> \setupbtx[dataset=main]
> \definebtxrendering[bibrendering][aps][dataset=main, numbering=short]
> \setupbtxlist[aps][
> alternative=b,
> distance=.5em,
> ]
> \setupbtx[aps:cite][alternative=short]
>
> \starttext
>
> Knuth developed \TeX \cite[knuth1]
> Several persons said something \cite[someother].
>
> \placelistofpublications[bibrendering]
>
> \stoptext
> ```
>
> The remaining part now is to mark publications of Knuth in a different way.
> I have tried this and failed. Here is my code so far:
> ```
> \startluacode
> function render_cite(short, author)
> print(author)
> if author:lower():find("knuth") then
> context("[>" .. short .. "]")
> else
> context("[" .. short .. "]")
> end
> end
> \stopluacode
> \definebtx[aps:cite:special][aps:cite]
> \startsetups btx:aps:cite:special
> \btxcitereference
> \ctxlua{render_cite([==[\btxflush{year}]==], [==[\btxflush{author}]==])}
> \stopsetups
> % use it with \cite[special][knuth1]
> ```
> This has several problems:
> - \btxflush{short} does not work as I expected that. How can I get the short form?
> - \btxflush to pass arguments to lua does not work as intended. On the lua side the
> variable "author" resolves to "\btxflushauthor{author}" and not to "D. E. Knuth".
> How can I pass the data?
>
> I use Lua only because I find it more convenient as a programming language. If a
> plain tex solution is simpler, I'm happy to use that.
>
>
> Another question that came up while studying the source code:
> What effect have \c!, \s!, and \v!? These commands exist a lot in the above
> cited files.
>
> Gerion
>
>
> Am Mittwoch, 17. April 2024, 15:44:12 MESZ schrieb Gerion Entrup:
> > Hi,
> >
> > > The APS style is an example of a number-based citation system. As you
> > > are looking for a tag-based citation, it might be better to start with
> > > something like the APA style.
> >
> > I'm kind of satisfied with the publication-list layout of the APS style so I chose
> > this as a base. If it is simpler to start with the APA style, I can do that.
> >
> > My hope is that it is possible to just change the "label" that is used for
> > referencing and keep everything else as is.
> >
> > > Is there some specification for your short tag-based citation style?
> >
> > biblatex implements this with the "alphabetic" style. I'm not aware of
> > a specification, though. Does the "short" form in ConTeXt exist for a
> > specific reason? :)
> >
> > Gerion
> >
> > > On Tue, 16 Apr 2024 06:04:35 +0200
> > > Gerion Entrup <gerion.entrup@flump.de> wrote:
> > >
> > > > Hi,
> > > >
> > > > I'm trying to customize a cite format in a bibliography. Currently,
> > > > I'm using the aps style which fits so far, except of the plain number
> > > > as reference. In concrete, I want to change the following:
> > > > - Use the first letter of the last name and the year as reference
> > > > (this should be exactly the short form). It is more less also
> > > > described here [1].
> > > > - Highlight publications of a certain author with an extra char (e.g.
> > > > '>')
> > > >
> > > > Here is a minimal example (lets assume, every occurrence of Knuth
> > > > should be highlighted): ```
> > > > \setupinteraction[state=start]
> > > >
> > > > \startbuffer[testdata]
> > > > @Book{knuth1,
> > > > author = {Donald E. Knuth},
> > > > title = {TEX and METAFONT. New directions in typesetting},
> > > > year = {1979},
> > > > publisher = {Addison-Wesley},
> > > > }
> > > > @Article{someother,
> > > > author = {Some Person and Some Otherperson},
> > > > title = {Another title},
> > > > year = {1900},
> > > > }
> > > > \stopbuffer
> > > >
> > > > % enable tracing
> > > > \enabletrackers[publications, publications.crossref,
> > > > publications.details, publications.cite, publications.strings]
> > > >
> > > > \usebtxdataset[main][testdata.buffer]
> > > > \usebtxdefinitions[aps]
> > > > \setupbtx[dataset=main]
> > > > \definebtxrendering[bibrendering][aps][dataset=main]
> > > >
> > > > % this seems to have no effect?
> > > > \setupbtx[alternative=short]
> > > >
> > > > \starttext
> > > >
> > > > Knuth developed \TeX \cite[knuth1].
> > > > Several persons said something \cite[someother].
> > > >
> > > > \placelistofpublications[bibrendering]
> > > >
> > > > \stoptext
> > > > ```
> > > >
> > > > It should be rendered as:
> > > > ```
> > > > Knuth developed TeX [>Knu79].
> > > > Several persons said something [PO00].
> > > >
> > > > [Knu79] D.E. Knuth, TEX and METAFONT. New directions in
> > > > typesetting (Addison-Wesley, 1979). [PO00] S. Person and S.
> > > > Otherperson, Another title, (1900). ```
> > > >
> > > > How can I achieve that \cite[something] always renders in the short
> > > > form by default? How can I customize that references to Knuth contain
> > > > this extra '>'? How can I customize the APS style to also use the
> > > > short form in the list of publications instead of numbers?
> > > >
> > > > Best
> > > > Gerion
> > > >
> > > > [1]
> > > > https://tex.stackexchange.com/questions/295444/citation-style-with-first-letters-of-authors-lastname
>
[-- Attachment #1.2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
[-- Attachment #2: Type: text/plain, Size: 511 bytes --]
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___________________________________________________________________________________
prev parent reply other threads:[~2024-04-25 15:42 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-16 4:04 [NTG-context] " Gerion Entrup
2024-04-17 13:06 ` [NTG-context] " Alan Braslau via ntg-context
2024-04-17 13:44 ` Gerion Entrup
2024-04-23 14:03 ` [NTG-context] Combine lua and btx setup, was: " Gerion Entrup
2024-04-25 15:40 ` Gerion Entrup [this message]
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3091740.CbtlEUcBR6@falbala \
--to=gerion.entrup@flump.de \
--cc=ntg-context@ntg.nl \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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 NNTP newsgroup(s).