I have been provided a file to handle references in a project and after some modifications of this file, I am able to have all my references displayed nicely. But I have numerous warnings as :
This entry is a Misc (I have intentionnaly removed informations in title, Url and HowPublished)You can't pop an empty literal stack for entry ESPP2013 while executing---line 1235 of file fcc.bst
Note that this warning happens for all type of entries defined in the fcc.bst file.
Code: Select all
@Misc{ESPP2013,
Title = {{The title}},
Url = {https://.../...},
Year = {2013},
HowPublished = {{Document}}
}
The fcc.bst file content is :
Code: Select all
% ...
%
% ...
%
% History:
% 2008-11-06 (MC) fixed bugs in format.collaboration and format.journal
% 2008-10-24 (MC) changed journal, title and \etal italicization
% 2008-10-22 (MC) adapted collaboration entry from
% ...
%
ENTRY
{ address
author
booktitle
chapter
edition
editor
howpublished
institution
journal
key
month
note
number
organization
pages
publisher
school
series
title
type
volume
year
archive
eprint
report
collaboration
SLACcitation
archivePrefix
primaryClass
url
doi
}
{}
{ label }
INTEGERS { output.state before.all mid.sentence after.quote after.sentence
after.quoted.block after.block }
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.quote :=
#3 'after.sentence :=
#4 'after.quoted.block :=
#5 'after.block :=
}
STRINGS { s t }
FUNCTION {output.nonnull}
{ 's :=
output.state mid.sentence =
{ ", " * write$ }
{ output.state after.quote =
{ " " * write$ }
{ output.state after.block =
{ add.period$ write$
newline$
"\newblock " write$
}
{ output.state before.all =
'write$
{ output.state after.quoted.block =
{ write$
newline$
"\newblock " write$
}
{ add.period$ " " * write$ }
if$
}
if$
}
if$
}
if$
mid.sentence 'output.state :=
}
if$
s
}
FUNCTION {output}
{ duplicate$ empty$
'pop$
'output.nonnull
if$
}
FUNCTION {output.check}
{ 't :=
duplicate$ empty$
{ pop$ "empty " t * " in " * cite$ * warning$ }
'output.nonnull
if$
}
FUNCTION {output.bibitem}
{ newline$
"\bibitem{" write$
cite$ write$
"}" write$
newline$
""
before.all 'output.state :=
}
FUNCTION {blank.sep}
{ after.quote 'output.state :=
}
FUNCTION {fin.entry}
{ output.state after.quoted.block =
'skip$
'add.period$
if$
write$
newline$
}
FUNCTION {new.block}
{ output.state before.all =
'skip$
{ output.state after.quote =
{ after.quoted.block 'output.state := }
{ after.block 'output.state := }
if$
}
if$
}
FUNCTION {new.sentence}
{ output.state after.block =
'skip$
{ output.state before.all =
'skip$
{ after.sentence 'output.state := }
if$
}
if$
}
FUNCTION {not}
{ { #0 }
{ #1 }
if$
}
FUNCTION {and}
{ 'skip$
{ pop$ #0 }
if$
}
FUNCTION {or}
{ { pop$ #1 }
'skip$
if$
}
FUNCTION {new.block.checka}
{ empty$
'skip$
% 'new.block
if$
}
FUNCTION {new.block.checkb}
{ empty$
swap$ empty$
and
'skip$
% 'new.block
if$
}
FUNCTION {new.sentence.checka}
{ empty$
'skip$
'new.sentence
if$
}
FUNCTION {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
'skip$
if$
}
FUNCTION {emphasize}
{ duplicate$ empty$
{ pop$ "" }
{ "{\em " swap$ * "}" * }
if$
}
FUNCTION {capitalize}
{ "u" change.case$ "t" change.case$ }
INTEGERS { nameptr namesleft numnames }
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
{ numnames #2 >
{ "," * }
'skip$
if$
t "others" =
{ " et al." * }
{ " and " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {format.authors}
{ author empty$
{ "" }
{ author format.names }
if$
}
FUNCTION {format.archive}
{
archivePrefix empty$
{ "" }
{ archivePrefix ":" *}
if$
}
FUNCTION {format.primaryClass}
{
primaryClass empty$
{ "" }
{ "\,[" primaryClass * "]" *}
if$
}
FUNCTION {format.eprint}
{ eprint empty$
{ ""}
{ archive empty$
{"\href{http://arxiv.org/abs/" eprint * "}" *
"{{\tt " * format.archive * eprint *
format.primaryClass * "}}" *}
{"\href{" archive * "/" * eprint * "}" *
"{{\tt " * format.archive * eprint *
format.primaryClass * "}}" *}
if$
}
if$
}
FUNCTION {format.url}
{ url empty$
{ "" }
{"\url{" url * "}" *}
if$
}
FUNCTION {add.doi}
{ duplicate$ empty$
{ skip$ }
{ doi empty$
{}
% {"\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" *}
{"\href{http://dx.doi.org/" doi * "}{" * doi * "}" *}
if$
}
if$
}
FUNCTION {format.report}
{ report empty$
{ ""}
{ report}
if$
}
FUNCTION {format.editors}
{ editor empty$
{ "" }
{ editor format.names
editor num.names$ #1 >
{ ", eds." * }
{ ", ed." * }
if$
}
if$
}
FUNCTION {format.title}
{ title empty$
{ "" }
{ "{\em " title * "\/}, " * }
if$
}
FUNCTION {format.title.p}
{ title empty$
{ "" }
{ "{\em " title * "\/}, " * }
if$
}
FUNCTION {n.dashify}
{ 't :=
""
{ t empty$ not }
{ t #1 #1 substring$ "-" =
{ t #1 #2 substring$ "--" = not
{ "--" *
t #2 global.max$ substring$ 't :=
}
{ { t #1 #1 substring$ "-" = }
{ "-" *
t #2 global.max$ substring$ 't :=
}
while$
}
if$
}
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
if$
}
while$
}
FUNCTION {format.date}
{ year empty$
{ month empty$
{ "" }
{ "there's a month but no year in " cite$ * warning$
month
}
if$
}
{ month empty$
'year
{ month ", " * year * }
if$
}
if$
}
FUNCTION {format.date.paren}
{ year empty$
{ month empty$
{ "" }
{ "there's a month but no year in " cite$ * warning$
month
}
if$
}
{ month empty$
{"(" year * ") " *}
{"(" month * ", " * year * ") " *}
if$
}
if$
}
% ----------------------------------------------------------------------------------
% Try to avoid multiple "collaboration"'s in the references, e.g. "The CMS Collaboration collaboration".
INTEGERS{ l }
FUNCTION{ string.length }
{
#1 'l :=
{duplicate$ duplicate$ #1 l substring$ = not}
{ l #1 + 'l :=}
while$
pop$ l
}
INTEGERS {find.length search.start search.end done}
STRINGS {find.string find.pattern}
FUNCTION {contains}
{
'find.pattern :=
'find.string :=
find.pattern string.length 'find.length :=
#1 'search.start :=
find.string string.length find.length - #2 + 'search.end :=
#0 'done :=
{ search.start search.end < }
{
find.string search.start find.length substring$ find.pattern =
{
#1 'done :=
search.end 'search.start :=%% stop searching
}
{ #1 search.start + 'search.start := }
if$
}
while$
done
}
% Now the actual function
FUNCTION {format.collaboration}
{ collaboration empty$
{ "" }
{ collaboration num.names$ #1 >
{ "{" collaboration *
collaboration "collaboration" contains
collaboration "Collaboration" contains or
{ "}" * }
{ " Collaborations}" * }
if$
}
{ "{" collaboration *
collaboration "collaboration" contains
collaboration "Collaboration" contains or
{ "}" * }
{ " Collaboration}" * }
if$
}
if$
}
if$
}
% ----------------------------------------------------------------------------------
FUNCTION {format.SLACcitation}
{ SLACcitation empty$
{""}
{ newline$ SLACcitation output "" newline$ }
if$
}
FUNCTION {format.btitle}
{ title emphasize
}
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
{ "~" }
{ " " }
if$
swap$ * *
}
FUNCTION {either.or.check}
{ empty$
'pop$
{ "can't use both " swap$ * " fields in " * cite$ * warning$ }
if$
}
FUNCTION {format.bvolume}
{ volume empty$
{ "" }
{ "vol.~" volume *
series empty$
'skip$
{ " of " * series emphasize * }
if$
"volume and number" number either.or.check
}
if$
}
FUNCTION {format.number.series}
{ volume empty$
{ number empty$
{ series field.or.null }
{ output.state mid.sentence =
{ "no.~" }
{ "No.~" }
if$
number *
series empty$
{ "there's a number but no series in " cite$ * warning$ }
{ " in " * series * }
if$
}
if$
}
{ "" }
if$
}
FUNCTION {format.edition}
{ edition empty$
{ "" }
{ edition "l" change.case$ "~ed." * }
if$
}
INTEGERS { multiresult }
FUNCTION {multi.page.check}
{ 't :=
#0 'multiresult :=
{ multiresult not
t empty$ not
and
}
{ t #1 #1 substring$
duplicate$ "-" =
swap$ duplicate$ "," =
swap$ "+" =
or or
{ #1 'multiresult := }
{ t #2 global.max$ substring$ 't := }
if$
}
while$
multiresult
}
FUNCTION {format.pages}
{ pages empty$
{ "" }
{ pages multi.page.check
{ "pp.~" pages n.dashify * }
{ "p.~" pages * }
if$
}
if$
}
FUNCTION {format.pages.nopp}
{ pages empty$
{ "" }
{ pages multi.page.check
{ pages n.dashify }
{ pages }
if$
}
if$
}
FUNCTION {format.volume}
{ volume empty$
{ "" }
{ "{\bf " volume * "} " * }
if$
}
FUNCTION {format.number}
{ number empty$
{ "" }
% { "no.~" number * "," *}
{ "no.~" number * "" *}
if$
}
FUNCTION {format.chapter.pages}
{ chapter empty$
'format.pages
{ type empty$
{ "ch.~" chapter * }
{ type "l" change.case$ chapter tie.or.space.connect }
if$
pages empty$
'skip$
{ ", " * format.pages * }
if$
}
if$
}
FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
{ "" }
% { "in " booktitle emphasize *
{ "in " booktitle *
editor empty$
'skip$
{ ", " * format.editors * }
if$
}
if$
}
FUNCTION {format.thesis.type}
{ type empty$
'skip$
{ pop$
output.state after.block =
{ type "t" change.case$ }
{ type "l" change.case$ }
if$
}
if$
}
FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
month empty$ year empty$ note empty$
and and and and and
{ "all relevant fields are empty in " cite$ * warning$ }
'skip$
if$
}
FUNCTION {format.tr.number}
{ type empty$
{ "" }
'type
if$
number empty$
{ "l" change.case$ }
{ number tie.or.space.connect }
if$
}
FUNCTION {format.paddress}
{ address empty$
{ "" }
{ "(" address * ")" * }
if$
}
FUNCTION {format.article.crossref}
{ key empty$
{ journal empty$
{ "need key or journal for " cite$ * " to crossref " * crossref *
warning$
""
}
{ "in " journal * }
if$
}
{ "in " key * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.crossref.editor}
{ editor #1 "{vv~}{ll}" format.name$
editor num.names$ duplicate$
#2 >
{ pop$ " {\em et.~al.}" * }
{ #2 <
'skip$
{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ " {\em et.~al.}" * }
{ " and " * editor #2 "{vv~}{ll}" format.name$ * }
if$
}
if$
}
if$
}
FUNCTION {format.book.crossref}
{ volume empty$
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
"In "
}
{ "Vol.~" volume *
" of " *
}
if$
editor empty$
editor field.or.null author field.or.null =
or
{ key empty$
{ series empty$
{ "need editor, key, or series for " cite$ * " to crossref " *
crossref * warning$
"" *
}
{ "{\em " * series * "\/}" * }
if$
}
{ key * }
if$
}
{ format.crossref.editor * }
if$
" \cite{" * crossref * "}" *
}
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 {\em " booktitle * "\/}" * }
{ "in " booktitle * }
if$
}
{ "in " key * }
if$
}
{ "in " format.crossref.editor * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.journal}
{ journal missing$
{ "" }
{journal " " *
format.volume *
format.date.paren *
month empty$
{ format.number }
'skip$
if$ * " " *
format.pages.nopp *
}
if$
}
FUNCTION {article}
{ output.bibitem
format.collaboration output
format.authors "author" output.check
format.title "title" output.check
blank.sep
crossref missing$
{ journal missing$
{}
% { format.journal add.doi "journal" output.check}
{ format.journal "journal" output.check}
if$
report missing$
{format.eprint output}
{blank.sep format.report output format.eprint output}
if$
}
{ format.article.crossref output.nonnull
format.pages output
format.eprint output
}
if$
add.doi output
% new.sentence
format.url output
% new.sentence
note output
new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {book}
{ output.bibitem
format.collaboration output
author empty$
{ format.editors "author and editor" output.check }
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
% format.btitle add.doi "title" output.check
format.btitle "title" output.check
crossref missing$
{ format.bvolume output
% new.block
format.number.series output
% new.sentence
publisher "publisher" output.check
address output
}
{ %new.block
format.book.crossref output.nonnull
}
if$
format.edition output
format.date "year" output.check
% new.block
format.eprint output
add.doi output
% new.block
format.url output
% new.block
note output
new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {booklet}
{ output.bibitem
format.collaboration output
format.authors output
title empty$
{ "empty title in " cite$ * warning$
howpublished new.sentence.checka
}
{ howpublished empty$ not
address empty$ month empty$ year empty$ and and
or
{ format.title.p output.nonnull }
{ format.title output.nonnull }
if$
blank.sep
}
if$
% howpublished capitalize output
address output
format.date output
% new.block
format.eprint output
% new.block
format.url output
% new.block
note output
new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {inbook}
{ output.bibitem
format.collaboration output
author empty$
{ format.editors "author and editor" output.check }
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
format.btitle "title" output.check
crossref missing$
{ format.bvolume output
% format.chapter.pages add.doi "chapter and pages" output.check
format.chapter.pages "chapter and pages" output.check
% new.block
format.number.series output
% new.block
publisher "publisher" output.check
address output
}
% { format.chapter.pages add.doi "chapter and pages" output.check
{ format.chapter.pages "chapter and pages" output.check
% new.block
format.book.crossref output.nonnull
}
if$
format.edition output
format.date "year" output.check
% new.block
format.eprint output
add.doi output
% new.block
format.url output
% new.block
note output
new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {incollection}
{ output.bibitem
format.collaboration output
format.authors "author" output.check
% format.title add.doi "title" output.check
format.title "title" output.check
blank.sep
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.bvolume output
format.number.series output
format.chapter.pages output
% new.block
publisher "publisher" output.check
address output
format.edition output
format.date "year" output.check
}
{ format.incoll.inproc.crossref output.nonnull
format.chapter.pages output
}
if$
% new.block
format.eprint output
add.doi output
% new.block
format.url output
% new.block
note output
new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {inproceedings}
{ output.bibitem
format.collaboration output
format.authors "author" output.check
% format.title add.doi "title" output.check
format.title "title" output.check
blank.sep
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.bvolume output
format.number.series output
format.pages output
organization output
% new.block
publisher output
address output
format.date "year" output.check
}
{ format.incoll.inproc.crossref output.nonnull
format.pages output
}
if$
% new.block
format.eprint output
add.doi output
% new.block
format.url output
% new.block
note output
new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {conference} { inproceedings }
FUNCTION {manual}
{ output.bibitem
format.collaboration output
author empty$
{ organization empty$
'skip$
{ organization output.nonnull
address output
}
if$
}
{ format.authors output.nonnull }
if$
format.btitle "title" output.check
author empty$
{ organization empty$
{ address new.block.checka
address output
}
'skip$
if$
}
{ organization address new.block.checkb
organization output
address output
}
if$
format.edition output
format.date output
% new.block
format.eprint output
% new.block
format.url output
% new.block
note output
fin.entry
}
FUNCTION {mastersthesis}
{ output.bibitem
format.authors "author" output.check
% format.title add.doi "title" output.check
format.title "title" output.check
blank.sep
"Master's thesis" format.thesis.type output.nonnull
school "school" output.check
address output
format.date "year" output.check
add.doi output
% new.block
format.url output
% new.block
note output
fin.entry
}
FUNCTION {misc}
{ output.bibitem
format.collaboration output
format.authors output
title empty$
{ howpublished new.sentence.checka }
{ howpublished empty$ not
month empty$ year empty$ and
or
{ format.title.p output.nonnull }
{ format.title output.nonnull }
if$
blank.sep
}
if$
howpublished capitalize output
format.date output
% new.block
crossref missing$
{ journal missing$
{}
% { format.journal add.doi "journal" output.check}
{ format.journal "journal" output.check}
if$
report missing$
{format.eprint output}
{blank.sep format.report output format.eprint output}
if$
}
{ format.article.crossref output.nonnull
format.pages output
format.eprint output
}
if$
add.doi output
format.url output
% new.sentence
note output
new.sentence
fin.entry
empty.misc.check
}
FUNCTION {phdthesis}
{ output.bibitem
format.authors "author" output.check
% format.btitle add.doi "title" output.check
format.btitle "title" output.check
% new.block
"PhD thesis" format.thesis.type output.nonnull
school "school" output.check
address output
format.date "year" output.check
% new.block
format.eprint output
add.doi output
% new.block
format.url output
% new.block
note output
% new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {proceedings}
{ output.bibitem
editor empty$
{ organization output }
{ format.editors output.nonnull }
if$
% format.btitle add.doi "title" output.check
format.btitle "title" output.check
format.bvolume output
format.number.series output
editor empty$
'skip$
{ organization output }
if$
% new.block
publisher output
address output
format.date "year" output.check
% new.block
format.eprint output
add.doi output
% new.block
format.url output
% new.block
note output
new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {techreport}
{ output.bibitem
format.collaboration output
format.authors "author" output.check
% format.title add.doi "title" output.check
format.title "title" output.check
blank.sep
% format.tr.number output.nonnull
institution "institution" output.check
address output
format.date "year" output.check
% new.block
format.eprint output
add.doi output
% new.block
format.url output
% new.block
note output
fin.entry
}
FUNCTION {unpublished}
{ output.bibitem
format.collaboration output
format.authors "author" output.check
format.title.p "title" output.check
blank.sep
note "note" output.check
format.date output
% new.sentence
format.url output
format.SLACcitation output
fin.entry
}
FUNCTION {default.type} { misc }
MACRO {jan} {"Jan."}
MACRO {feb} {"Feb."}
MACRO {mar} {"Mar."}
MACRO {apr} {"Apr."}
MACRO {may} {"May"}
MACRO {jun} {"June"}
MACRO {jul} {"July"}
MACRO {aug} {"Aug."}
MACRO {sep} {"Sept."}
MACRO {oct} {"Oct."}
MACRO {nov} {"Nov."}
MACRO {dec} {"Dec."}
MACRO {nup} {"Nucl. Phys."}
MACRO {cmp} {"Comm. Math. Phys."}
MACRO {prl} {"Phys. Rev. Lett."}
MACRO {pl} {"Phys. Lett."}
MACRO {rmp} {"Rev. Mod. Phys."}
MACRO {ijmp} {"Int. Jour. Mod. Phys."}
MACRO {mpl} {"Mod. Phys. Lett."}
MACRO {pr} {"Phys. Rev."}
MACRO {arXiv} {"http://arxiv.org/abs"}
MACRO {cogprints} {"http://cogprints.org"}
MACRO {pubmed} {"http://www.ncbi.nlm.nih.gov/pubmed"}
READ
STRINGS { longest.label }
INTEGERS { number.label longest.label.width }
FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
#1 'number.label :=
#0 'longest.label.width :=
}
FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
number.label #1 + 'number.label :=
label width$ longest.label.width >
{ label 'longest.label :=
label width$ 'longest.label.width :=
}
'skip$
if$
}
EXECUTE {initialize.longest.label}
ITERATE {longest.label.pass}
FUNCTION {begin.bib}
{ preamble$ empty$
'skip$
{ preamble$ write$ newline$ }
if$
"\providecommand{\href}[2]{#2}"
"\begingroup\raggedright\begin{thebibliography}{" * longest.label *
"}" * write$ newline$ }
EXECUTE {begin.bib}
EXECUTE {init.state.consts}
ITERATE {call.type$}
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}\endgroup" write$ newline$
}
EXECUTE {end.bib}