Fancy hacking
I think the simpler solution is just to hack you bst
file. So, for example look in the apalike2.bst
file for
FUNCTION {format.authors}
{ author empty$
{ "" }
{ author format.names }
if$
}
and add smallcaps
before format.names
so that it looks like
{ author smallcaps format.names }
Here I added the smallcaps
function near FUNCTION {emphasize}
, and it is defined as
FUNCTION {smallcaps}
{ duplicate$ empty$
{ pop$ "" }
{ "{\sc " swap$ * "}" * }
if$
}
The result is shown below:
It works with apa.bst
too, as shown below:
Using makebst
Otherwise, you can use makebst, and generate your own format, e.g.
$ latex makebst
will ask you a series of questions about the format of your bibliography, including typeface about authors:
TYPEFACE FOR AUTHORS IN LIST OF REFERENCES:
(*) Normal font for author names
(s) Small caps authors (\sc)
(i) Italic authors (\it or \em)
(b) Bold authors (\bf)
(u) User defined author font (\bibnamefont)
Select:
\ans=s
You have selected: Small caps authors
When the above steps are completed, you can just run latex
on the filename you gave, and you'll have your bst
file. Below is the result. (I accepted all default choices, so you may have to tweak it to fit the APA style.)
You will need to edit the article
function in apj.bst
and provide an instruction to print the contents of the entry's title
field. I suggest you do so as follows:
Make a copy of the file apj.bst
; call the copy, say, myapj.bst
.
Open the file myapj.bst
in a text editor and search for the function called article
. I believe it starts right after the line that says %%%%%%% End of functions from astrobib
.
In the function article
, locate the lines
date.block
crossref missing$
Insert the line
format.title "title" output.check
between these two lines.
Save the file myapj.bst
, either in the directory where your main .tex
file is located or in a directory that's searched by BibTeX. If you choose the latter method, you should also update the TeX distribution's filename database.
Start using the new bibliography style with the instruction \bibliographystyle{myapj}
. When switching from one bibliography style to another, it's important to run latex, bibtex, and latex twice more so that all changes are fully propagated.
If you're interested in learning more about the BibTeX infix syntax, I heartily recommend you read the document Tame the BeaST -- The B to X of BibTeX by Nicolas Markey.
Best Answer
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 alteringFUNCTION {article}
. It contains the lineswhich need so be altered to
To alter book titles, changes are needed to
FUNCTION {format.btitle}
, which is short so I'll reproduce in fullIn both cases, we are working with a stack containing 'the
thing
to be made italic'. First, I've added\emph{
to the stack, then usedswap$
to put thething
after\emph{
on the stack. The*
concatenates the two, then I add}
to the stack and concatenate again.