From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/19506 Path: news.gmane.org!not-for-mail From: "Stefano" Newsgroups: gmane.comp.tex.context Subject: RE: Problem with the bib module -- \bibdoif solution? Date: Thu, 31 Mar 2005 12:58:44 -0500 Message-ID: References: <20050330161729.GE5793@puritan.pcp.ath.cx> Reply-To: ckh5z9ae@sympatico.ca, mailing list for ConTeXt users NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Trace: sea.gmane.org 1112291924 25613 80.91.229.2 (31 Mar 2005 17:58:44 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Thu, 31 Mar 2005 17:58:44 +0000 (UTC) Original-X-From: ntg-context-bounces@ntg.nl Thu Mar 31 19:58:42 2005 Return-path: Original-Received: from ronja.vet.uu.nl ([131.211.172.88] helo=ronja.ntg.nl) by ciao.gmane.org with esmtp (Exim 4.43) id 1DH3vJ-0007pH-Aw for gctc-ntg-context-518@m.gmane.org; Thu, 31 Mar 2005 19:57:41 +0200 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 5B5BA127FF; Thu, 31 Mar 2005 19:58:54 +0200 (CEST) Original-Received: from ronja.ntg.nl ([127.0.0.1]) by localhost (ronja.vet.uu.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 03314-06; Thu, 31 Mar 2005 19:58:51 +0200 (CEST) Original-Received: from ronja.vet.uu.nl (localhost.localdomain [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 06533127E3; Thu, 31 Mar 2005 19:58:51 +0200 (CEST) Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 77276127E3 for ; Thu, 31 Mar 2005 19:58:49 +0200 (CEST) Original-Received: from ronja.ntg.nl ([127.0.0.1]) by localhost (ronja.vet.uu.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 03098-07 for ; Thu, 31 Mar 2005 19:58:48 +0200 (CEST) Original-Received: from sunburn.uwaterloo.ca (sunburn.uwaterloo.ca [129.97.116.26]) by ronja.ntg.nl (Postfix) with ESMTP id 7D901127CA for ; Thu, 31 Mar 2005 19:58:48 +0200 (CEST) Original-Received: from aquila (aquila.uwaterloo.ca [129.97.116.83]) by sunburn.uwaterloo.ca (8.9.3p2/8.9.3) with SMTP id MAA24406 for ; Thu, 31 Mar 2005 12:58:44 -0500 (EST) Original-To: "mailing list for ConTeXt users" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook IMO, Build 9.0.6604 (9.0.2911.0) Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441 In-Reply-To: <20050330161729.GE5793@puritan.pcp.ath.cx> X-Virus-Scanned: by amavisd-new at ntg.nl X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.5 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: ntg-context-bounces@ntg.nl Errors-To: ntg-context-bounces@ntg.nl X-Virus-Scanned: by amavisd-new at ntg.nl Xref: news.gmane.org gmane.comp.tex.context:19506 X-Report-Spam: http://spam.gmane.org/gmane.comp.tex.context:19506 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