![Campo personalizado no BibLaTeX](https://rvso.com/image/449617/Campo%20personalizado%20no%20BibLaTeX.png)
Gostaria de permitir um campo personalizado opcional em minhas entradas .bib. Não preciso que esses campos façam parte da bibliografia, mas gostaria de poder acessá-los via
\citefield{<entry-key>}{<custom-field-name>}
A resposta provavelmente está em algum lugar nas referências listadas abaixo, mas minhas tentativas iniciais de adaptação \DeclareSourcemap
falharam \DeclareFieldFormat
.
Referências:
- Como posso criar tipos de dados totalmente novos com BibLaTeX/Biber?
- Como adicionar magicamente o campo de arquivo a cada entrada em um arquivo bib?
Código:
\begin{filecontents}{mybib.bib}
@book{knuth1984texbook,
title={The texbook},
author={Knuth, D.E. and Knuth, A.D. and Bibby, D. and American Mathematical Society and Addison-Wesley Publishing Company and Addison-Wesley},
isbn={9780201134483},
lccn={85030845},
series={Computers \& typesetting},
url={https://books.google.com/books?id=hEYuAQAAIAAJ},
year={1984},
publisher={Addison-Wesley},
myFieldA={Useful Book},
myFieldB={on Shelf 4},
}
@book{goossens1994latex,
title={The LaTeX Companion},
author={Goossens, M. and Mittelbach, F. and Samarin, A.},
isbn={9780201541991},
lccn={lc93023150},
series={Addison-Wesley series on tools and techniques for computer typesetting},
url={https://books.google.com/books?id=54A3MuBzIrEC},
year={1994},
publisher={Addison-Wesley},
myFieldA={Also Useful Book},
myFieldB={on Shelf 5},
}
\end{filecontents}
%% -----------------
\documentclass{article}
\usepackage{biblatex}
\addbibresource{mybib.bib}
\begin{document}
This should print ``Also Useful Book'':
\citefield{goossens1994latex}{myFieldA}
\end{document}
Responder1
Desde que você precise apenas de alguns campos e esteja disposto a sacrificar um pouco a semântica de marcação (para as citações), você pode usar os "campos personalizados" biblatex
fornecidos (os estilos padrão não os usam, mas se você está usando um não padrão, talvez seja necessário verificar se ele está realmente "vago").
Dado que você mencionou nos comentários que gostaria de um nome personalizado para o seu campo, isso pode ser conseguido usando um SourceMap para copiar o valor do seu campo personalizado para um dos disponíveis no biblatex
modelo de dados do. Isso significa que você pode ter seu nome personalizado em seu .bib
arquivo, mas ao fazer a citação você ainda terá que usar um campo biblatex
"sabe".
Isso poderia ser algo como:
\begin{filecontents}[overwrite]{mybib.bib}
@book{knuth1984texbook,
title={The texbook},
author={Knuth, D.E. and Knuth, A.D. and Bibby, D. and American Mathematical Society and Addison-Wesley Publishing Company and Addison-Wesley},
isbn={9780201134483},
lccn={85030845},
series={Computers \& typesetting},
url={https://books.google.com/books?id=hEYuAQAAIAAJ},
year={1984},
publisher={Addison-Wesley},
myFieldA={Useful Book},
myFieldB={on Shelf 4},
}
@book{goossens1994latex,
title={The LaTeX Companion},
author={Goossens, M. and Mittelbach, F. and Samarin, A.},
isbn={9780201541991},
lccn={lc93023150},
series={Addison-Wesley series on tools and techniques for computer typesetting},
url={https://books.google.com/books?id=54A3MuBzIrEC},
year={1994},
publisher={Addison-Wesley},
myFieldA={Also Useful Book},
myFieldB={on Shelf 5},
}
\end{filecontents}
%% -----------------
\documentclass{article}
\usepackage{biblatex}
\addbibresource{mybib.bib}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=myFieldA]
\step[fieldset=usera, origfieldval]
\step[fieldsource=myFieldB]
\step[fieldset=userb, origfieldval]
}
}
}
\begin{document}
This should print ``Also Useful Book'':
\citefield{goossens1994latex}{usera}
This should print ``on Shelf 5'':
\citefield{goossens1994latex}{userb}
\end{document}
A vantagem desta abordagem é que não é necessário estender o modelo de dados, por isso é mais simples. Mas se você realmente precisa usar o nome do campo personalizado em ambos os lados, pelo que sei, a única maneira é estender o modelo de dados para incluir o seu campo. Nesse caso, a resposta canônica é a de @moewe em:Como posso criar tipos de dados totalmente novos com BibLaTeX/Biber?.