Tenho visto em diversas ocasiões em alguns textos bibliografias bem formatadas que incluíam hiperlinks para MR, Zbl e arxiv, às vezes doi, por exemplo, algo parecido com isto (copiado deeste papel):
- Boris Albar e Daniel Gonçalves. Em triângulos em gráficos livres de Kr-menor. 2013. arXiv:1304.5468.
- Ken-ichi Kawarabayashi e Zi-Xia Song. Número de independência e clique menor. J. Teoria dos Grafos, 56(3):219–226, 2007. doi:10.1002/jgt.20268. SENHOR:2355127.
- Alexandr V. Kostochka. O número mínimo de Hadwiger para gráficos com um determinado grau médio de vértices. Metodologia Diskret. Analiz., 38:37–58, 1982. SR.:0713722, Zbl:0544.05037.
Qual estilo BibTeX pode ser usado para obter tal coisa? Quais campos são usados e como são formatados?
Como eu faria isso manualmente (sem BibTeX)?
Responder1
biblatex
é muito bom em coisas assim.
biblatex
permite apenas que um eprint
destino seja especificado para cada entrada, portanto criaremos um novo campo para cada um dos diferentes tipos de impressão eletrônica.
Teremos que pedir biblatex
para fornecer um campo literal para isso e habilitá-lo para todos os tipos de entrada. * Isso é feito através de um .dbx
arquivo datamodel ( ). Esse arquivo é criado filecontents
no exemplo abaixo, na prática você provavelmente não fará isso e apenas copiará o .dbx
arquivo para um local que o TeX possa encontrá-lo.
Chamaremos o arquivoext-eprint.dbx
\ProvidesFile{ext-eprint.dbx}[2016/09/11 extended stand-alone eprint fields]
\DeclareDatamodelFields[type=field,datatype=verbatim]{arxiv,mr,zbl,jstor,hdl,pubmed,googlebooks,pmcid}
\DeclareDatamodelEntryfields{arxiv,mr,zbl,jstor,hdl,pubmed,googlebooks,pmcid}
\DeclareDatamodelFields[type=field,datatype=literal]{arxivclass}
\DeclareDatamodelEntryfields{arxivclass}
Em seguida, você precisa carregar o arquivo do modelo de dados. Supondo que seja chamado ext-eprint.dbx
, você passa a opção datamodel=ext-eprint
no biblatex
momento do carregamento.
Pode-se adicionar aliases arbitrários via
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=pmid, fieldtarget=pubmed]
}
}
}
Então, é claro, essas e-prints precisam de formatos, o padrão geral é bastante semelhante
\makeatletter
\DeclareFieldFormat{arxiv}{%
arXiv\addcolon\space
\ifhyperref
{\href{http://arxiv.org/\abx@arxivpath/#1}{%
\nolinkurl{#1}%
\iffieldundef{arxivclass}
{}
{\addspace\texttt{\mkbibbrackets{\thefield{arxivclass}}}}}}
{\nolinkurl{#1}
\iffieldundef{arxivclass}
{}
{\addspace\texttt{\mkbibbrackets{\thefield{arxivclass}}}}}}
\makeatother
\DeclareFieldFormat{pmcid}{%
PMCID\addcolon\space
\ifhyperref
{\href{http://www.ncbi.nlm.nih.gov/pmc/articles/#1}{\nolinkurl{#1}}}
{\nolinkurl{#1}}}
\DeclareFieldFormat{mr}{%
MR\addcolon\space
\ifhyperref
{\href{http://www.ams.org/mathscinet-getitem?mr=MR#1}{\nolinkurl{#1}}}
{\nolinkurl{#1}}}
\DeclareFieldFormat{zbl}{%
Zbl\addcolon\space
\ifhyperref
{\href{http://zbmath.org/?q=an:#1}{\nolinkurl{#1}}}
{\nolinkurl{#1}}}
\DeclareFieldAlias{jstor}{eprint:jstor}
\DeclareFieldAlias{hdl}{eprint:hdl}
\DeclareFieldAlias{pubmed}{eprint:pubmed}
\DeclareFieldAlias{googlebooks}{eprint:googlebooks}
biblatex
usa o eprint
bibmacro para imprimir as informações do eprint, então apenas adicionamos nossos novos tipos lá
\renewbibmacro*{eprint}{%
\printfield{arxiv}%
\newunit\newblock
\printfield{jstor}%
\newunit\newblock
\printfield{mr}%
\newunit\newblock
\printfield{zbl}%
\newunit\newblock
\printfield{hdl}%
\newunit\newblock
\printfield{pubmed}%
\newunit\newblock
\printfield{pmcid}%
\newunit\newblock
\printfield{googlebooks}%
\newunit\newblock
\iffieldundef{eprinttype}
{\printfield{eprint}}
{\printfield[eprint:\strfield{eprinttype}]{eprint}}}
MWE
\documentclass[a4paper,12pt]{article}%
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\begin{filecontents*}{ext-eprint.dbx}
\ProvidesFile{ext-eprint.dbx}[2016/09/11 extended stand-alone eprint fields]
\DeclareDatamodelFields[type=field,datatype=verbatim]{arxiv,mr,zbl,jstor,hdl,pubmed,googlebooks,pmcid}
\DeclareDatamodelEntryfields{arxiv,mr,zbl,jstor,hdl,pubmed,googlebooks,pmcid}
\DeclareDatamodelFields[type=field,datatype=literal]{arxivclass}
\DeclareDatamodelEntryfields{arxivclass}
\end{filecontents*}
\begin{filecontents*}{\jobname.bib}
@article{ContEp,
author = {Mark G. Frei and Hitten P. Zaveri and Susan Arthurs and Gregory K. Bergey and Christophe Jouny and Klaus Lehnertz and Jean Gotman and Ivan Osorio and Theoden I. Netoff and Walter J. Freeman and John Jefferys and Gregory Worrell and Michel Le Van Quyen and Steven J. Schiff and Florian Mormannn},
title = {Controversies in epilepsy},
subtitle = {Debates held during the Fourth International Workshop on Seizure Prediction},
journaltitle = {Epilepsy \& Behavior},
volume = {19},
number = {1},
pages = {4-16},
date = {2010-09},
doi = {10.1016/j.yebeh.2010.06.009},
pmcid = {PMC2943379},
pmid = {20708976},
}
@article{frege,
author = {Gottlob Frege},
title = {The Thought},
subtitle = {A Logical Inquiry},
journaltitle = {Mind},
series = {newseries},
volume = {65},
number = {259},
jstor = {2251513},
date = {1956-07},
pages = {289-311},
}
@online{hawking,
author = {S. W. Hawking},
title = {Information Preservation and Weather Forecasting for Black Holes},
arxiv = {1401.5761},
arxivclass = {hep-th},
date = {2014-01-22},
}
@online{albar,
author = {B. Albar and D. Gon{\c c}alves},
title = {On triangles in $K_r$-minor free graphs},
arxiv = {1304.5468},
year = 2013,
}
@article{kawa,
author = {Ken-ichi Kawarabayashi and Zi-Xia Song},
title = {Independence number and clique minors},
journal = {J. Graph Theory},
volume = 56,
number = 3,
pages = {219-226},
year = 2007,
doi = {10.1002/jgt.20268},
mr = {2355127},
}
@article{kostochka,
author = {A. V. Kostochka},
title = {On the minimum of the Hadwiger number for graphs with given mean degree of vertices},
journal = {Metody Diskretn. Anal.},
volume = {38},
pages = {37--58},
year = {1982},
mr = {0713722},
zbl = {0544.05037},
}
\end{filecontents*}
\usepackage[backend=biber, style=authoryear-icomp, dashed=true, datamodel=ext-eprint]{biblatex}
\usepackage{hyperref}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=pmid, fieldtarget=pubmed]
}
}
}
\makeatletter
\DeclareFieldFormat{arxiv}{%
arXiv\addcolon\space
\ifhyperref
{\href{http://arxiv.org/\abx@arxivpath/#1}{%
\nolinkurl{#1}%
\iffieldundef{arxivclass}
{}
{\addspace\texttt{\mkbibbrackets{\thefield{arxivclass}}}}}}
{\nolinkurl{#1}
\iffieldundef{arxivclass}
{}
{\addspace\texttt{\mkbibbrackets{\thefield{arxivclass}}}}}}
\makeatother
\DeclareFieldFormat{pmcid}{%
PMCID\addcolon\space
\ifhyperref
{\href{http://www.ncbi.nlm.nih.gov/pmc/articles/#1}{\nolinkurl{#1}}}
{\nolinkurl{#1}}}
\DeclareFieldFormat{mr}{%
MR\addcolon\space
\ifhyperref
{\href{http://www.ams.org/mathscinet-getitem?mr=MR#1}{\nolinkurl{#1}}}
{\nolinkurl{#1}}}
\DeclareFieldFormat{zbl}{%
Zbl\addcolon\space
\ifhyperref
{\href{http://zbmath.org/?q=an:#1}{\nolinkurl{#1}}}
{\nolinkurl{#1}}}
\DeclareFieldAlias{jstor}{eprint:jstor}
\DeclareFieldAlias{hdl}{eprint:hdl}
\DeclareFieldAlias{pubmed}{eprint:pubmed}
\DeclareFieldAlias{googlebooks}{eprint:googlebooks}
\renewbibmacro*{eprint}{%
\printfield{arxiv}%
\newunit\newblock
\printfield{jstor}%
\newunit\newblock
\printfield{mr}%
\newunit\newblock
\printfield{zbl}%
\newunit\newblock
\printfield{hdl}%
\newunit\newblock
\printfield{pubmed}%
\newunit\newblock
\printfield{pmcid}%
\newunit\newblock
\printfield{googlebooks}%
\newunit\newblock
\iffieldundef{eprinttype}
{\printfield{eprint}}
{\printfield[eprint:\strfield{eprinttype}]{eprint}}}
\begin{document}
\nocite{baez/online,wassenberg,hawking,albar,kawa,kostochka,frege,ContEp}
\printbibliography
\end{document}
* A A partir da versão 2.9, biblatex
documentação recomenda carregar \DeclareDatamodelFields
e \DeclareDatamodelEntryfields
em um arquivo de modelo de dados externo, mas também funciona no próprio documento. Consulte §4.5.3Especificação do modelo de dadosdobiblatex
documentação.\DeclareDatamodel...
os comandos devem ser externalizados para um .dbx
arquivo. VerA macro do modelo de dados não pode ser usada no preâmbulo.
Responder2
Esses tipos de alterações de formatação personalizada são facilmente alcançáveis com o projeto Bibulous recentemente desenvolvido (http://nzhagen.github.io/bibulous/). Para o exemplo do OP, temos um arquivo de banco de dados
@arxiv{one,
author = {B. Albar and D. Gon{\c c}alves},
title = "{On triangles in K\_r-minor free graphs}",
eprint = {1304.5468},
year = 2013
}
@article{two,
author = {Ken-ichi Kawarabayashi and Zi-Xia Song},
title = {Independence number and clique minors},
journal = {J. Graph Theory},
volume = 56,
number = 3,
pages = {219-226},
year = 2007,
doi = {10.1002/jgt.20268},
mr = {2355127}
}
@article{three,
author = {A. V. Kostochka},
title = {On the minimum of the Hadwiger number for graphs with given mean degree of vertices},
journal = {Metody Diskretn. Anal.},
volume = {38},
pages = {37--58},
year = {1982},
mr = {0713722},
zbl = {0544.05037}
}
Para essas entradas de banco de dados, podemos criar um modelo personalizado que utiliza os campos zbl
, mr
, doi
e eprint
da seguinte forma:
TEMPLATES:
arxiv = <au>. <title>. <year>. arXiv: \href{http://arxiv.org/abs/<eprint>}{<eprint>}.
article = <au>. <title>. <journal>, <volume>[(<number>)]:[<startpage>--<endpage>|<startpage>|<eid>|], <year>.[ doi: \href{http://dx.doi.org/<doi>}{<doi>}.][ MR: \href{http://www.ams.org/mathscinet-getitem?mr=MR<mr>}{<mr>}.][ Zbl: \href{http://zbmath.org/?q=an:<zbl>}{<zbl>}.]
Observe que o trecho acima é na verdade o arquivo de modelo de estilo completo. Usando o seguinte arquivo principal do LaTeX
\documentclass{article}
\usepackage[colorlinks=True,urlcolor=blue,citecolor=blue,breaklinks=true]{hyperref}
\begin{document}
\nocite{one,two,three}
\bibliographystyle{mybst}
\bibliography{mybib}
\end{document}
obtemos a lista de referências formatada solicitada pelo OP: