[texhax] Question mark in BibTeX title

Torsten Wagner torsten.wagner at fh-aachen.de
Tue Nov 10 11:26:18 CET 2009


Hi Jakob,

> Hi,
> 
> I'm trying to get the entry below to display the question mark at the  
> end of the title instead of the full stop before the publisher. What I  
> get at the moment (using natbib and \bibliographystyle{linquiry2}) is  
> the following:
> 
> Aitchison, Jean. 2001. Language Change: Progress or decay?. Cambridge:  
> Cambridge University Press, 3rd edition.
> 
> I can't seem to find a way to remove the period, which, particularly  
> with an \emph title, looks rather ugly.
> 
> @book{Aitchison2001,
> 	author="Aitchison, Jean",
> 	title="{Language Change:\ Progress or decay?}",
> 	edition="3\textsuperscript{rd}",
> 	address="Cambridge",
> 	publisher="Cambridge University Press",
> 	year=2001
> }

I frighten there is no easy solution for this. The period is part of the 
style-definition
Somewhere there it is written ... After the title add a period...
And that is exactly what you get. Normally this is a nice feature, since it 
makes the reference list uniform.
For the same reason one could argue the result you get it completely correct 
and you should not change it.
Think about it... you just follow the reference style *very* strict.

If you like to change it nonetheless, you might can think about the following 
procedure.
Find the linquiry2.bst style file in your system and copy it to a local place 
(e.g. in your document folder).
Open it up and search for the entry function book
Copy and paste the complete function and rename it e.g., book2
Try to modify the style of this copy to get no period at the end of a dot.

I just checked the your style file... the function which adds the dot called 
output.nonnull
this function is called by output.check 
which is called by the book function

you might have to work from top to down and define simply new functions  

e.g. create book2 function (by copy from book) and  change to 

date.block
format.btitle "title" output.check2
crossref missing$

create output.check2 function and change to

output.nonnull2

create output.nonnull2 function and change to

FUNCTION {output.nonnull}
{ 's :=
  output.state mid.sentence =
    { ", " * write$ }
    { output.state after.block =
        { add.period$ write$
          newline$
          "\newblock " write$
        }
        { output.state before.all =
            'write$
            {" " * write$ }
          if$
        }
      if$
      mid.sentence 'output.state :=
    }
  if$
  s
}


After that go and rename the entries in question to @book2

This should work, I did similar thinks, however, as you can see it is a bit 
fiddle and the style files are programmed in a UPN notation with stack operators 
.... maybe you know this from HP calculators.

Hope that helps a bit

Torsten



More information about the texhax mailing list