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