I just discovered this thread since I was trying to achieve the same.
This is what I did to change the IEEEtran.bst
formatting.
Move the quote.close
entry in the output.nonnull
function up so it ends up at the top. It should look like this:
FUNCTION {output.nonnull}
{ swap$
prev.status.quote quote.close =
{ "''" * }
{ skip$ }
if$
prev.status.punct punct.comma =
{ "," * }
{ skip$ }
if$
<OMITTED CODE>
}
In order to retain the comma after the double quotes when the title should end with a punctuation mark, remove the punctuation mark check in the format.article.title
function. It should look like this:
FUNCTION {format.article.title}
{ title duplicate$ empty$ 'skip$
{ this.to.prev.status
this.status.std
"t" change.case$
}
if$
"title" bibinfo.check
duplicate$ empty$ 'skip$
{ quote.close 'this.status.quote :=
punct.std 'this.status.punct :=
select.language
"``" swap$ *
cap.status.std
}
if$
}