Como modificar o arquivo `unsrt.bst` para gerar um arquivo .bbl conciso e legível no estilo Jounal of Applied Phyisics (JAP)?

Como modificar o arquivo `unsrt.bst` para gerar um arquivo .bbl conciso e legível no estilo Jounal of Applied Phyisics (JAP)?

Vou submeter um artigo para o Journal Of Applied Physics (JAP). Então, estou usando revtex4-1 document class \documentclass[aip,jap,reprint,superscriptaddress,amsmath,amssymb]{revtex4-1}.

Durante a preparação do meu artigo, utilizo o arquivo .bib para gerar minha lista de referências. Mas agora que chega o momento do envio, quero incorporar a referência em meu arquivo de látex como \bibitems. Um método é copiar o conteúdo do arquivo .bbl que é gerado automaticamente pelo arquivo .bib durante o processamento do látex.

Assim como Jon comentou, o conteúdo do arquivo .bbl é controlado pela documentclass. Mas o problema é que descobri que o arquivo .bbl gerado pelo estilo documentclass JAP é muito complexo, longo e ilegível. Algo como:

\begin{thebibliography}{2}%
\makeatletter
\providecommand \@ifxundefined [1]{%
 \@ifx{#1\undefined}
}%
\providecommand \@ifnum [1]{%
 \ifnum #1\expandafter \@firstoftwo
 \else \expandafter \@secondoftwo
 \fi
}%
\providecommand \@ifx [1]{%
 \ifx #1\expandafter \@firstoftwo
 \else \expandafter \@secondoftwo
 \fi
}%
\providecommand \natexlab [1]{#1}%
\providecommand \enquote  [1]{``#1''}%
\providecommand \bibnamefont  [1]{#1}%
\providecommand \bibfnamefont [1]{#1}%
\providecommand \citenamefont [1]{#1}%
\providecommand \href@noop [0]{\@secondoftwo}%
\providecommand \href [0]{\begingroup \@sanitize@url \@href}%
\providecommand \@href[1]{\@@startlink{#1}\@@href}%
\providecommand \@@href[1]{\endgroup#1\@@endlink}%
\providecommand \@sanitize@url [0]{\catcode `\\12\catcode `\$12\catcode
  `\&12\catcode `\#12\catcode `\^12\catcode `\_12\catcode `\%12\relax}%
\providecommand \@@startlink[1]{}%
\providecommand \@@endlink[0]{}%
\providecommand \url  [0]{\begingroup\@sanitize@url \@url }%
\providecommand \@url [1]{\endgroup\@href {#1}{\urlprefix }}%
\providecommand \urlprefix  [0]{URL }%
\providecommand \Eprint [0]{\href }%
\providecommand \doibase [0]{http://dx.doi.org/}%
\providecommand \selectlanguage [0]{\@gobble}%
\providecommand \bibinfo  [0]{\@secondoftwo}%
\providecommand \bibfield  [0]{\@secondoftwo}%
\providecommand \translation [1]{[#1]}%
\providecommand \BibitemOpen [0]{}%
\providecommand \bibitemStop [0]{}%
\providecommand \bibitemNoStop [0]{.\EOS\space}%
\providecommand \EOS [0]{\spacefactor3000\relax}%
\providecommand \BibitemShut  [1]{\csname bibitem#1\endcsname}%
\let\auto@bib@innerbib\@empty
%</preamble>
\bibitem [{\citenamefont {Mazin}\ \emph {et~al.}(2008)\citenamefont {Mazin},
  \citenamefont {Singh}, \citenamefont {Johannes},\ and\ \citenamefont
  {Du}}]{10.1103/PhysRevLett.101.057003}%
  \BibitemOpen
  \bibfield  {author} {\bibinfo {author} {\bibfnamefont {I.~I.}\ \bibnamefont
  {Mazin}}, \bibinfo {author} {\bibfnamefont {D.~J.}\ \bibnamefont {Singh}},
  \bibinfo {author} {\bibfnamefont {M.~D.}\ \bibnamefont {Johannes}}, \ and\
  \bibinfo {author} {\bibfnamefont {M.~H.}\ \bibnamefont {Du}},\ }\href
  {\doibase 10.1103/PhysRevLett.101.057003} {\bibfield  {journal} {\bibinfo
  {journal} {{Phys. Rev. Lett.}}\ }\textbf {\bibinfo {volume} {{101}}},\
  \bibinfo {pages} {057003} (\bibinfo {year} {2008})}\BibitemShut {NoStop}%
\bibitem [{\citenamefont {Mazin}(2010)}]{10.1038/nature08914}%
  \BibitemOpen
  \bibfield  {author} {\bibinfo {author} {\bibfnamefont {I.~I.}\ \bibnamefont
  {Mazin}},\ }\href {\doibase 10.1038/nature08914} {\bibfield  {journal}
  {\bibinfo  {journal} {{Nature}}\ }\textbf {\bibinfo {volume} {{464}}},\
  \bibinfo {pages} {183} (\bibinfo {year} {2010})}\BibitemShut {NoStop}%
\end{thebibliography}%

a aparência da referência é assim insira a descrição da imagem aqui

Bem, colar um bloco tão grande de dados em um arquivo látex certamente funciona. Mas é ilegível.

Na verdade, se usarmos unsrto estilo modificado mencionado aquiÉ possível obter a bibliografia unsrt + abbrv?. Podemos gerar uma aparência de referência bastante semelhante ao estilo JAP. A modificação é feita no unsrt.bstarquivo. Já que o nome do autor no original unsrtnão é do estilo JAP. Então, mudando ff~para f.~ in FUNCTION {format.names}, obtivemos o estilo do nome do autor JAP. O arquivo .bbl gerado está muito claro agora como abaixo:

\begin{thebibliography}{1}

\bibitem{10.1103/PhysRevLett.101.057003}
I.~I. Mazin, D.~J. Singh, M.~D. Johannes, and M.~H. Du.
\newblock {\em {Phys. Rev. Lett.}}, {101}(5):057003, 2008.

\bibitem{10.1038/nature08914}
I.~I. Mazin.
\newblock {\em {Nature}}, {464}(7286):183--186, 2010.

\end{thebibliography}

insira a descrição da imagem aqui

Para produzir a aparência exata da referência JAP. Podemos apenas fazer algumas substituições de texto como:

  1. excluir \em
  2. excluir (5) e (7286)
  3. substitua ":" por ","
  4. adicione colchetes ao ano.
  5. negrito 101 e 464
  6. mude 183--186 para 183

a lista de operações acima pode ser feita facilmente com algum conhecimento de substituição de expressões regulares. E finalmente obtivemos os seguintes \bibitems que produzem exatamente o mesmo estilo de referência JAP.

\begin{thebibliography}{1}
\bibitem{10.1103/PhysRevLett.101.057003}
I.~I. Mazin, D.~J. Singh, M.~D. Johannes, and M.~H. Du.
\newblock {{Phys. Rev. Lett.}} \textbf{101}, 057003 (2008).

\bibitem{10.1038/nature08914}
I.~I. Mazin.
\newblock {{Nature}} \textbf{464}, 183 (2010).
\end{thebibliography}

Assim como mudar ff~para f.~in unsrt.bstfornece o nome correto do autor no estilo JAP. Acredito que precisamos apenas de mais algumas modificações no unsrt.bstarquivo para gerar os \bibitems corretos e claros no estilo JAP em uma única etapa, portanto, não preciso de nenhum pós-processamento de substituição de regex.

Responder1

Acho que talvez eu possa responder minha própria pergunta agora.

A chave para esse problema é gerar um arquivo bst de estilo bibliográfico personalizado.

Existem duas maneiras de fazer isso

  1. use a ferramenta makebst no pacotebabador personalizado
  2. usar software baseado em javababador

makebsté uma ferramenta de linha de comando para gerar um arquivo .bst personalizado depois de responder a uma série de cerca de 70 perguntas relacionadas ao formato do estilo de referência desejado. Para mim não é tão amigável, você pode aprender como usá-lo passo a passo lendo este artigoLaTeX, gerenciamento de bibliografia e estilos.

Por outro lado, achei bib-itmuito mais fácil de usar (graças ao autor do bib-it). Tem um Bibtex style generator, que é gráfico. Agora vou mostrar como bib-itgerar um arquivo .bst estilo JAP em apenas alguns minutos.


Abrindo bib-it, clique em "ferramentas -> gerador de estilo". você verá uma interface gráfica intitulada Bibtex style generator. O que você precisa fazer é uma configuração de 3 etapas mostrada na imagem a seguir:

  1. artigo insira a descrição da imagem aqui
  2. livro insira a descrição da imagem aqui
    1. autor insira a descrição da imagem aqui

Por fim, basta pressionar "gerar e salvar" para obter seu arquivo bst personalizado.

A aparência da referência gerada é como insira a descrição da imagem aqui

e o arquivo .bbl gerado automaticamente é bastante claro

\begin{thebibliography}{}

\bibitem{10.1103/PhysRevLett.101.057003}
I.~I. Mazin, D.~J. Singh, M.~D. Johannes and M.~H. Du, {Phys. Rev. Lett.}
  \textbf{{101}}, 057003 (2008).

\bibitem{10.1038/nature08914}
I.~I. Mazin, {Nature} \textbf{{464}}, 183--186 (2010).

\end{thebibliography}

O único defeito são as "páginas", o JAP só precisa da página inicial. Isso pode ser corrigido com uma única operação de substituição usando expressão regular.

Responder2

Você pode inserir o conteúdo do seu arquivo bib no início do seu preâmbulo (seguindo a \documentclasslinha) usando o filecontentsambiente.

\usepackage{filecontents} 
\begin{filecontents} {mwe.bib}
@online{tab:test,
  author                   = {Doe, John},
  Url                      = {http://www.example.com/images/image.jpg},
  Urldate                  = {2014-02-25},
  Timestamp                = {2014.06.13},
  Note                     = {Table \ref{tab1}}, %<== this should point to your table caption label
  year                     = {2014}, %this is necessary for the in-text citation to work
}
\end{filecontents}

informação relacionada