As you say, the BibTeX stack language is a bit tricky. Here, we need to alter two functions. In a renamed copy of spbasic.bst
, you first want to make journal names italic by altering FUNCTION {article}
. It contains the lines
journal
remove.dots
which need so be altered to
journal
remove.dots
"\emph{" swap$ * "}" *
To alter book titles, changes are needed to FUNCTION {format.btitle}
, which is short so I'll reproduce in full
FUNCTION {format.btitle}
{
title "title" bibinfo.check
duplicate$ empty$
'skip$
{
"\emph{" swap$ * "}" *
}
if$
}
In both cases, we are working with a stack containing 'the thing
to be made italic'. First, I've added \emph{
to the stack, then used swap$
to put the thing
after \emph{
on the stack. The *
concatenates the two, then I add }
to the stack and concatenate again.
The function which format the list of names inside the bst
file is the one called format.names
. For example, for the apa.bst
file, this function has the following code:
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't := % last name first
nameptr #1 >
[... etc ...]
}
For full details about the syntax used in bst
files and in this function in particular, refer to the document Taming the beast (pag. 35).
The line which we have to modify in this case is the one containing the string:
"{vv~}{ll}{, jj}{, f.}"
This string specifies the required format for the name of each author. vv
represents the "von" part (if it exists) ll
is the full last name, jj
is the "junior" part of the name (if it exists) and finally ff
would be the full first name, while f
is the initial of the first name. Commas and dots are literals and are added in the output.
Removing the dot after the f
produces the result you want, or almost:
Note that, since we used f
instead of ff
, both the first and middle names are abbreviated. But using ff
we will have both expanded. Apparently BibTeX does not have a notion of "middle name", all what is not last name is considered first name.
If you need the first name "fully expanded" but the middle name abbreviated and without dot, then this is beyond my bibtex abilities. I don't even know if that would be possible.
Best Answer
Try adding the following function:
Then, in the function
FUNCTION {format.title}
, change the following line fromto
Let me know if it works ;) .