Я составляю резюме и в нем есть раздел для технических отчетов, но у меня возникли проблемы с включением этого раздела и некоторых других разделов в выходной документ.
\begin{refsection} % This is a custom heading for those references marked as "Technical Report"
\nocite{*}
\printbibliography[sorting=chronological, type=techreport, title={technical reports}, keyword={Technical Report}, heading=subbibliography]
\end{refsection}
techreport
У меня в досье определенно есть .bib
:
@article{Natarajan2011,
author = {Natarajan, Nagarajan and Singh-Blom, Ulf Martin and Tewari, Ambuj and Woods, John O and Dhillon, Inderjit S and Marcotte, Edward M},
file = {:Users/jwoods/Downloads/Papers/Natarajan2011.pdf:pdf},
journal = {UTCS Technical Report},
title = {{Predicting gene\textendash disease associations using multiple species data.}},
volume = {TR-11-37},
year = {2011},
type = {techreport},
keyword = {Technical Report}
Я пробовал использовать параметры keyword
и type
независимо, но у меня это не работает. Как ни странно, технический отчет отображается в article
разделе вместо этого, хотя я постарался исключить технические отчеты:
\begin{refsection} % Articles that aren't in preparation
\nocite{*}
\printbibliography[sorting=chronological, type=article, title={articles}, notkeyword={In Preparation}, notkeyword={Technical Report}, heading=subbibliography]
\end{refsection}
В некоторых случаях он также, похоже, игнорирует мои \DeclareBibliographyDriver
команды, например, для моей диссертации:
\RequirePackage[style=verbose, maxnames=99, sorting=ydnt]{biblatex}
\DeclareFieldFormat[patent]{title}{#1\par}
\DeclareFieldFormat[article]{title}{#1\par}
\DeclareFieldFormat[book]{title}{#1\par}
\DeclareFieldFormat[inproceedings]{title}{#1\par}
\DeclareFieldFormat[phdthesis]{title}{#1\par}
%
% ... other declarations, which do work ...
%
\DeclareBibliographyDriver{phdthesis}{%
\printfield{title}%
\newblock%
\printnames{author}%
\par%
\newblock%
{%
\footnotesize\addfontfeature{Color=lightgray}%
\printfield{title}%
\setunit{\addcomma\space}%
\printfield{year}%
%\setunit{\addcomma\space}%
%\printlist{location}%
\newunit%
}
\par\vspace{0.3\baselineskip}
}
Вместо этого он печатается в стандартном формате «автор, название», хотя я четко указал название в одной строке, а автора — в следующей.
Кажется, я \printbibliography
как-то неправильно понимаю команды. Может ли кто-нибудь помочь мне исправить это недопонимание?
решение1
Три ошибки!.
- Параметр
\printbibliography
(ключ)type
не фильтрует записи по полюtype
, а печатает bibitem поentry names
. это означает,@book
,@article
, и т.д... (без@
). Пример bibentry — это@article
если он изменен на@techreport
он работает, еслиtype
параметр (\printbibliography
)отчет.
Для фильтрации по полю (отличному от ключевых слов) можно использовать check
опцию и \defbibcheck
. Например, для фильтрации по type
равнотехнический отчет.
\defbibcheck{techreport}{%
\iffieldundef{type}
{\skipentry}
{\iffieldequalstr{type}{techreport}
{}
{\skipentry}}}
и
\printbibliography[check=techreport]
Поле bibtex
keywords
не являетсяключевое слово. В примере записи bibtex используетсяключевое слово.По умолчанию
biblatex
не используется записьphdthesis
. Он используетthesis
запись дляphdthesis
иmastersthesis
. И возможно использоватьtype
поле для выбора, если записьmasterthesis
илиphdthesis
. Когда определеноentry
с@pdfthesis
,biblatex
«преобразуйте» его вthesis
запись и определитеtype
поле длядокторская диссертация.
В примере в вопросе необходимо переопределить драйвер thesis
и объявить title
формат thesis
записи.
\DeclareFieldFormat[thesis]{title}{#1\par}
\DeclareBibliographyDriver{thesis}{%
\printfield{title}%
\newblock%
\printnames{author}%
\par%
\newblock%
{%
\printfield{title}%
\setunit{\addcomma\space}%
\printfield{year}%
\newunit%
}
\par\vspace{0.3\baselineskip}}
МВЭ:
\documentclass{article}
\RequirePackage[style=authoryear, maxnames=99]{biblatex}
\begin{filecontents}{MWE.bib}
@techreport{Natarajan2011,
author = {Natarajan, Nagarajan and Singh-Blom, Ulf Martin and Tewari, Ambuj and Woods, John O and Dhillon, Inderjit S and Marcotte, Edward M},
file = {:Users/jwoods/Downloads/Papers/Natarajan2011.pdf:pdf},
journal = {UTCS Technical Report},
title = {{Predicting gene\textendash disease associations using multiple species data.}},
volume = {TR-11-37},
year = {2011},
type = {techreport},
keywords = {Technical Report}}
@phdthesis{thesis000,
author = {Author Name},
title = {Title of the thesis},
type= {phdthesis},
year = {2011}}
\end{filecontents}
\addbibresource{MWE.bib}
\defbibcheck{techreport}{%
\iffieldundef{type}
{\skipentry}
{\iffieldequalstr{type}{techreport}
{}
{\skipentry}}}
\DeclareFieldFormat[thesis]{title}{#1\par}
\DeclareBibliographyDriver{thesis}{%
\printfield{title}%
\newblock%
\printnames{author}%
\par%
\newblock%
{%
\printfield{title}%
\setunit{\addcomma\space}%
\printfield{year}%
\newunit%
}
\par\vspace{0.3\baselineskip}}
\begin{document}
\begin{refsection}
\nocite{*}
\printbibliography[type=report,title=Printing the {\it reports} entries]
\printbibliography[check=techreport,title=Filtering by {\it type} field equals to techreport]
\printbibliography[keyword=Technical Report,title=Filtering by keyword]
\printbibliography[title=Editing the {\it thesis} driver, type=thesis]
\end{refsection}
\end{document}