* Re: Conditional commands
2009-06-29 19:41 Conditional commands Andreas Schneider
@ 2009-06-30 16:14 ` Andreas Schneider
0 siblings, 0 replies; 2+ messages in thread
From: Andreas Schneider @ 2009-06-30 16:14 UTC (permalink / raw)
To: ntg-context
[-- Attachment #1.1: Type: text/plain, Size: 3736 bytes --]
Hello again,
after fiddling around some more, I stumbled across \getvalue which
seems to solve my problems - for whatever reason ... I guess it does
some preprocessing.
I now got my bibliography enhancements (I needed so far) running. If
someone else needs it, here it is:
\def\mycite{\dodoubleempty\domycite}
\def\defaultciterepeat{Ebenda}
\def\defaultciteprefix{Vgl. }
\def\defaultcitepage{S. }
\def\defaultcitechapter{Kap. }
\def\domycite[#1][#2]{%
\ifsecondargument
\getparameters[MCP][prefix=\defaultciteprefix,page=,chapter=,suffix=,#1]
\doinsertmycite[#2]{\MCPprefix}{%
\expandoneargafter\doifnotempty{\MCPpage}{\
\defaultcitepage\MCPpage.}%
\expandoneargafter\doifnotempty{\MCPchapter}{\
\defaultcitechapter\MCPchapter.}%
\expandoneargafter\doifnotempty{\MCPsuffix}{\ \MCPsuffix}% } \else
\doinsertmycite[#1]{\defaultciteprefix}{}
\fi
}
\def\doinsertmycite[#1]#2#3{%
\footnote{%
#2%prefix
\doifelse{\getvalue{mycitelast}}{#1}%
{\defaultciterepeat\doifempty{#3}{.}}%
{\doifelse{\getvalue{mycitepast #1}}{used}%
{\bgroup%
\getcitedata[arttitle][#1] to \bibtitle
\cite[alternative=authoryear][#1]. \bibtitle.%
\egroup}%
{\cite[alternative=data][#1]}}%
#3%suffix
}
\setvalue{mycitelast}{#1}
\setvalue{mycitepast #1}{used}
}
Essentially all it does is: wrap \mycite around \cite to process the
output depending on the circumstances:
* if the citation is the first of this bib-entry, it is places
completely into the footnote (alternative=data)
* if the citation was used before, in the document, it is only
referenced rather short (author, year, title)
* if the citation was used _directly_ before, it is not repeated but
only referenced with the word "Ebenda" (meaning more or less "see
above")
It is also able to prepend text (like "Vgl. " [="Compare"]) and append
text (like page or chapter number, or a custom string).
Examples:
\mycite[some_bib_entry]
\mycite[prefix={Vgl. }, page=123, chapter={Introduction},
suffix={some more text.}][some_bib_entry]
The only thing it doesn't handle (yet) is, if a citation was
directly used before on a previous page. Then mycitelast should be
reset so that at least the short citation is used. But I wasn't able to
find a safe way to do this. I fiddled around with
\insertpagebreakhandler for a while, but apart from not yielding any
result, I don't believe, that it is intended for stuff like this.
So if someone knows a way to handle that last case (page break) too, I
would be glad to hear about it.
Regards,
Andreas.
On Mon, 29 Jun 2009 21:41:49 +0200
Andreas Schneider <aksdb@gmx.de> wrote:
> Hi,
>
> I'm currently trying to make a command that outputs different text
> depending on the situation it has been called, but I'm absolutely
> stuck there (I'm not very familiar with TeX, so it's probably obvious
> to most of you :-/). It currently looks like this:
>
> \doassign[mycite][last=]
> \def\mycite[#1]{%
> \footnote{%
> \doifelse{\mycitelast}{#1}{Ebenda}{\cite[alternative=data][#1]}%
> }
> \doassign[mycite][last=#1]
> }
>
> The idea is as follow: if I cite the same citation two or more times
> in a row (e.g. Some text\mycite[chan_genetic_2005] ... more
> text\mycite[chan_genetic_2005]) it should only output the whole
> quotation the first time, and "Ebenda" all the other times. But as it
> seems, the \doifelse always evaluates to false and therefore outputs
> the whole citation every time.
>
> Does someone see what I might be doing wrong? Or is there even a
> better way to do this?
>
> Thanks,
> Andreas.
>
[-- Attachment #1.2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 1948 bytes --]
[-- Attachment #2: Type: text/plain, Size: 487 bytes --]
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://tex.aanhet.net
archive : https://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 2+ messages in thread