我有一个图书馆,里面有另一本书(主要来源)的参考资料,我分析了该书的哪些页面被引用(以及引用频率)。我想将这些数据打印在表格中。
是否可以使用biblatex/biber
处理附加字段(在本例中citedonpages
)来填充附加列(甚至计算逗号分隔的条目)?
在以下 MWE 中,我手动创建了表格。由于实际图书馆有许多条目,因此自动化解决方案将非常有用(在示例中,它甚至会检测到同一页面的多个条目 - 这很好,但不是必需的)。
梅威瑟:
\documentclass{scrbook}
\usepackage{tabularx,booktabs}
\usepackage[backend=biber,style=authortitle]{biblatex}
\begin{filecontents*}{Analysis.bib}
@Book{Miller1832a,
author = {John Miller},
title = {Elementary book},
year = {1832},
citedonpages = {67,67,68,97},
}
@InBook{Smith1744a,
author = {Daniel Smith},
booktitle = {Collection of important articles},
location = {Amsterdam},
title = {Noteworthy Article},
year = {1744},
citedonpages = {5, 23, 37, 79, 248, 249, 254},
}
\end{filecontents*}
%\addbibresource{Analysis.bib}
\begin{document}
\begin{refsection}[Analysis.bib]
\nocite{*}
\printbibliography[heading=none]
% is it possible to autogenerate this table using Analysis.bib and biber/biblatex?
\begin{tabularx}{0.95 \textwidth}{llccX}
\toprule
{\bfseries Author} & {\bfseries Title} & {\bfseries Year} & {\bfseries \# Citations} & ... on pages \\\midrule%\otoprule
Miller, John & Elementary book & 1832 & 4 & 67(2), 68, 97\\
Smith, Daniel & Noteworthy articls & 1744 & 7 & 5, 23, 37, 79, 248, 249, 254 \\
\bottomrule
\end{tabularx}
\end{refsection}
\end{document}
PS. 迄今为止有用的来源:\refsection{}
来自的环境\nocite{*} 用于 biblatex/biber 的单个 bibdatasources
答案1
对于表格书目,您可以使用biblatex-ext-tabular
从biblatex-ext
。 看是否有一种简单的方法可以将参考书目放入表格中?。
如果要添加标准数据模型中不存在的新字段,首先需要在文件中声明它们.dbx
。请参阅将字段“tome”添加到 biblatex 条目。
对于示例中显示的数据,您不需要新的字段和单独的Analysis.bib
。biblatex
如果您不将其隐藏在单独的中,则可以自动收集该数据refsection
。
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=authoryear, citecounter, backref]{biblatex}
\usepackage{biblatex-ext-tabular}
\usepackage{longtable}
\usepackage{array}
\usepackage{booktabs}
\newcolumntype{L}[1]{%
>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}p{#1}}
\newcolumntype{C}[1]{%
>{\centering\let\newline\\\arraybackslash\hspace{0pt}}p{#1}}
\newbibmacro*{tablepageref}{%
\iflistundef{pageref}
{}
{\printlist[pageref][-\value{listtotal}]{pageref}}}
\renewbibmacro*{pageref}{}
\defbibtabular{bibtabular}
{\renewbibmacro*{bbx:dashcheck}[2]{##2}%
\renewbibmacro*{labeltitle}{}%
\renewbibmacro*{date+extradate}{}%
\setlength{\LTpre}{0pt}%
\setlength{\LTpost}{0pt}%
\renewcommand*{\arraystretch}{2}%
\begin{longtable}{%
@{}
L{\dimexpr0.25\textwidth-1\tabcolsep\relax}
L{\dimexpr0.3\textwidth-2\tabcolsep\relax}
L{\dimexpr0.11\textwidth-2\tabcolsep\relax}
L{\dimexpr0.22\textwidth-2\tabcolsep\relax}
L{\dimexpr0.12\textwidth-1\tabcolsep\relax}
@{}}
\toprule
\textbf{Author} & \textbf{Title} & \textbf{Year} & \textbf{\# Citations} & \dots\ on pages\\
\midrule}
{\bottomrule
\end{longtable}}
{\anchorlang{\usebibmacro{author/editor+others}}
& \plainlang{\usebibmacro{title}}
& \plainlang{\printdate}
& \plainlang{\arabic{citecounter}}
& \plainlang{\usebibmacro{tablepageref}} \\}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem \autocite{sigfridsson,worman}
\clearpage
Lorem \autocite{sigfridsson,nussbaum}
\clearpage
Lorem \autocite{sigfridsson,geer}
\clearpage
Lorem \autocite{worman,geer,nussbaum}
\clearpage
Lorem \autocite{sigfridsson}
\printbibliography
\printbibtabular[title=Analysis]
\end{document}