ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* Problem with the bib module (yeah, so what else is new)
@ 2005-03-30 16:17 Nikolai Weibull
  2005-03-31 17:58 ` Problem with the bib module -- \bibdoif solution? Stefano
  0 siblings, 1 reply; 2+ messages in thread
From: Nikolai Weibull @ 2005-03-30 16:17 UTC (permalink / raw)


OK, another one of those "hey, the bib module has an issue"-kind of
mails.  The problem is that \bibdoif and its relatives don't work.
They always evaluate to true.  I have tried to figure out why this is
so, but I'm just not good enough at reading TeX macros (yet).  The main
problem is that I want to do something like this for my
\setuppublicationlist:

\doglobal\newif\ifBIBLoutputbeforesurname
\global\BIBLoutputbeforesurnamefalse

\def\BIBLwholename#1#2#3#4#5%
  {\bibdoif{#1}{#1\unskip\bibalternative\c!firstnamesep\BIBLoutputbeforesurnametrue}%
   \bibdoif{#4}{#4\unskip\bibalternative\c!firstnamesep\BIBLoutputbeforesurnametrue}%
   \bibdoif{#2}{#2\unskip\bibalternative\c!vonsep\BIBLoutputbeforesurnametrue}%
   \ifBIBLoutputbeforesurname \else
     \unskip%
     \BIBLoutputbeforesurnamefalse%
   \fi
   #3\bibalternative\c!surnamesep%
   \bibdoif{#5}{#5\unskip}}

The problem is that one can't have

\author[]{}[]{}{Organization}

without extra spaces appearing before the Organization.  Another issue is that
extra spaces occur between the first and last name in the \normalauthor
style,
        nikolai

-- 
::: name: Nikolai Weibull    :: aliases: pcp / lone-star / aka :::
::: born: Chicago, IL USA    :: loc atm: Gothenburg, Sweden    :::
::: page: minimalistic.org   :: fun atm: gf,lps,ruby,lisp,war3 :::
main(){printf(&linux["\021%six\012\0"],(linux)["have"]+"fun"-97);}

^ permalink raw reply	[flat|nested] 2+ messages in thread

* RE: Problem with the bib module -- \bibdoif solution?
  2005-03-30 16:17 Problem with the bib module (yeah, so what else is new) Nikolai Weibull
@ 2005-03-31 17:58 ` Stefano
  0 siblings, 0 replies; 2+ messages in thread
From: Stefano @ 2005-03-31 17:58 UTC (permalink / raw)


Nikolai,

I too discovered that \bibdoif always evaluates to true.  For some reason
(which I don't know), \ifx does not take a an empty group {} and evaluate it
to \empty.  So, I came up with the following ...

\def\bibdoiftext#1#2%
  {{\setbox0=\hbox{#1}\ifdim\wd0>0pt{#2}\fi}}

Basically, I place the contents of #1 into an \hbox, then check to see if
it's width > 0.  If yes (meaning #1 is not empty), then typeset #2.  I'm not
sure if I need the double group {{}}, since box0 is being assigned, I don't
want to overwrite its prior contents, if any.  Comments anyone??  I'm still
learning TeX macro programming ...

I also redefined some of the author formats for my own uses ... and indeed,
it works!!

\def\normalshortauthor#1#2#3#4#5%
  {\bibdoiftext{#4}{#4~}\bibdoiftext{#2}{#2~}#3\bibdoiftext{#5}{~#5}}

\def\invertedshortauthor#1#2#3#4#5%
  {\bibdoiftext{#2}{#2~}#3\bibdoiftext{#5}{~#5}\bibdoiftext{#4}{,~#4}}

You will notice that in both cases, the last name (#3) is always typeset, so
optional items before it have a trailing space, while optional items after
it have a leading space.  This ensures there are no extra spaces either
before or after the author, regardless of which portions are included.  I
used ~ for spacing to ensure that a name is not split between its components
and to provide consistent spacing after the periods.


Stefano


> -----Original Message-----
> From: ntg-context-bounces@ntg.nl [mailto:ntg-context-bounces@ntg.nl]On
> Behalf Of Nikolai Weibull
> Sent: Wednesday, March 30, 2005 11:17
> To: NTG-context List
> Subject: [NTG-context] Problem with the bib module (yeah,so what else is
> new)
>
>
> OK, another one of those "hey, the bib module has an issue"-kind of
> mails.  The problem is that \bibdoif and its relatives don't work.
> They always evaluate to true.  I have tried to figure out why this is
> so, but I'm just not good enough at reading TeX macros (yet).  The main
> problem is that I want to do something like this for my
> \setuppublicationlist:
>
> \doglobal\newif\ifBIBLoutputbeforesurname
> \global\BIBLoutputbeforesurnamefalse
>
> \def\BIBLwholename#1#2#3#4#5%
>
> {\bibdoif{#1}{#1\unskip\bibalternative\c!firstnamesep\BIBLoutputbe
> foresurnametrue}%
>
> \bibdoif{#4}{#4\unskip\bibalternative\c!firstnamesep\BIBLoutputbef
> oresurnametrue}%
>
> \bibdoif{#2}{#2\unskip\bibalternative\c!vonsep\BIBLoutputbeforesur
> nametrue}%
>    \ifBIBLoutputbeforesurname \else
>      \unskip%
>      \BIBLoutputbeforesurnamefalse%
>    \fi
>    #3\bibalternative\c!surnamesep%
>    \bibdoif{#5}{#5\unskip}}
>
> The problem is that one can't have
>
> \author[]{}[]{}{Organization}
>
> without extra spaces appearing before the Organization.  Another
> issue is that
> extra spaces occur between the first and last name in the \normalauthor
> style,
>         nikolai
>
> --
> ::: name: Nikolai Weibull    :: aliases: pcp / lone-star / aka :::
> ::: born: Chicago, IL USA    :: loc atm: Gothenburg, Sweden    :::
> ::: page: minimalistic.org   :: fun atm: gf,lps,ruby,lisp,war3 :::
> main(){printf(&linux["\021%six\012\0"],(linux)["have"]+"fun"-97);}
> _______________________________________________
> ntg-context mailing list
> ntg-context@ntg.nl
> http://www.ntg.nl/mailman/listinfo/ntg-context

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2005-03-31 17:58 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-03-30 16:17 Problem with the bib module (yeah, so what else is new) Nikolai Weibull
2005-03-31 17:58 ` Problem with the bib module -- \bibdoif solution? Stefano

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).