[texhax] Bug in plainnat.bst?

Edsko de Vries edsko at edsko.net
Sat Aug 23 12:29:20 CEST 2008


Hi,

I am using the crossref feature of bibtex to cross-reference articles in
conference proceedings. The problem starts when those proceedings do not have
an editor; for example:

  @inproceedings{hage:usageanalysis,
   crossref = {ICFP07},
   author   = {Jurriaan Hage and Stefan Holdermans and Arie Middelkoop},
   title    = {A generic usage analysis with subeffect qualifiers},
   pages    = {235--246},
  }
  
  @proceedings{ICFP07,
   title     = {ICFP '07: Proceedings of the 2007 ACM SIGPLAN international conference on Functional programming},
   booktitle = {ICFP '07: Proceedings of the 2007 ACM SIGPLAN international conference on Functional programming},
   year      = {2007},
   publisher = {ACM},
   key       = {ICFP07},
  }

(Since ACM proceedings do not have editors, the most logical key to use for
cross-referencing is the mnemonic for the conference.)

With the plainnat.bst style, the entry for hage:usageanalysis will be formatted
as

  Jurriaan Hage, Stefan Holdermans and Arie Middelkoop. A generic usage
  analysis with subeffect qualifiers. In ICFP07 ICFP07, pages 235--246.

Note the double occurrence of the key. In plainnat.bst, this is caused by the
line marked by the arrow in:

  FUNCTION {format.incoll.inproc.crossref}
  { editor empty$
    editor field.or.null author field.or.null =
    or
      { key empty$
          { booktitle empty$
              { "need editor, key, or booktitle for " cite$ * " to crossref " *
                crossref * warning$
                ""
              }
              { "In \emph{" booktitle * "}" * }
            if$
          }
          { "In " key * }    <--------------
        if$
      }
      { "In " }
    if$
    " \citet{" * crossref * "}" *
  }

Since that line outputs the key, which is then *again* output by the citet at
the very end, the key is duplicated in the output. I think this line should be
modified to just

          { "In " } 

unless perhaps I am abusing the entries in some way.

Edsko


More information about the texhax mailing list