我想要在表格的单独列中显示参考书目条目,如下所示:
Authors Year Title Journal Vol. No. Page No. Note
A, B and C 2016 Article Title Journal Name 1 10-15 ISI
MWE 如下:
\documentclass{article}
\usepackage[backend=biber, style=authoryear]{biblatex}
\bibliography{BiblatexTableExample}
\begin{document}
To achieve incentive compatibility, the auction winner has to pay the second highest price \cite{Vickrey1961}.
A good introduction to graph algorithms can be found in \cite{Golumbic2004}.
\printbibliography
\end{document}
其内容BiblatexTableExample
为:
@ARTICLE{Vickrey1961,
AUTHOR = {W. Vickrey},
TITLE = {Counterspeculation, auctions and sealed tenders},
JOURNAL = {Journal of Finance},
YEAR = {1961},
volume = {16},
pages = {8--37},
}
@BOOK{Golumbic2004,
AUTHOR = {M. C. Golumbic},
TITLE = {Algorithmic Graph Theory and Perfect Graphs},
PUBLISHER = {Elsevier Science},
YEAR = {2004},
edition = {2nd Edition},
}
任何有助于完成此任务的帮助都将不胜感激。谢谢
答案1
我建议用我最喜欢的命令来解决问题:\makecell
。
显然,您可以根据自己的喜好改变列宽,使用注释\showframe
并\frame
查看是否超出页面边框。
当然,如果您有除book
和之外的 bib 条目类型article
,则必须构建相应的\DeclareBibliographyDriver
。
我使用 将列标题放在参考书目每一页上\AddThispageHook
。由于挂钩一旦堆叠便不可堆叠,因此如果参考书目不是文档的最后一项,则必须在挂钩中包含条件,以使其仅对参考书目页面有效。
\begin{filecontents}{BiblatexTableExample.bib}
@ARTICLE{Vickrey1961,
AUTHOR = {W. Vickrey},
TITLE = {Counterspeculation, auctions and sealed tenders},
JOURNAL = {Journal of Finance},
YEAR = {1961},
volume = {16},
pages = {8--37},
note = {a1b2c3}
}
@BOOK{Golumbic2004,
AUTHOR = {M. C. Golumbic},
TITLE = {Algorithmic Graph Theory and Perfect Graphs},
PUBLISHER = {Elsevier Science},
YEAR = {2004},
edition = {2nd Edition},
note={ABC}
}
\end{filecontents}
\documentclass{article}
\usepackage[backend=biber, style=authoryear]{biblatex}
\usepackage{array}
\usepackage{makecell}
%\usepackage{showframe} % only for test purpose
\usepackage{atbegshi}
\usepackage{everypage}
% new commands to avoid repeating widths
\newcommand{\mysep}{\hspace{.01\textwidth}}
\newcommand{\myauthorprint}[1]{\makecell[t{p{.15\textwidth}}]{#1}}%
\newcommand{\myyearprint}[1]{\makecell[t{p{.07\textwidth}}]{#1}}%
\newcommand{\mytitleprint}[1]{\makecell[t{p{.26\textwidth}}]{#1}}%
\newcommand{\myjournalprint}[1]{\makecell[t{p{.23\textwidth}}]{#1}}%
\newcommand{\myvolprint}[1]{\makecell[t{p{.06\textwidth}}]{#1}}%
\newcommand{\mypageprint}[1]{\makecell[t{p{.07\textwidth}}]{#1}}%
\newcommand{\mynoteprint}[1]{\makecell[t{p{.10\textwidth}}]{#1}}%
\newcommand{\mybibheader}{
\myauthorprint{Authors}%
\mysep
\myyearprint{Year}%
\mysep
\mytitleprint{Title}%
\mysep
\myjournalprint{Journal}%
\mysep
\myvolprint{Vol. No.}%
\mysep
\mypageprint{Page No.}%
\mysep
\mynoteprint{Note}%
}
% bib items separation
\setlength\bibitemsep{1.7\itemsep}% plus 1pt minus 1pt}
% remove dot after year
\renewcommand{\labelnamepunct}{\addspace}
% normal text title (no italics, no ")
\DeclareFieldFormat[article,book]{title}{#1}
% remove dot after title
\renewcommand*{\newunitpunct}{\addspace}
% publisher in italics
\DeclareListFormat[book]{publisher}{\textit{#1}}
% journaltitle in italics
\DeclareFieldFormat[article]{journaltitle}{\textit{#1}}
% remove dot after volume
\renewcommand{\bibpagespunct}{\addspace}
% remove pp.
\DeclareFieldFormat[article]{pages}{#1}
% remove dot at the end of the bib entry
\renewcommand{\finentrypunct}{}
\DeclareBibliographyDriver{book}{%
\myauthorprint{\small\raggedright \printnames{author}}%
\mysep
\myyearprint{\small\raggedright \printfield{year}}%
\mysep
\mytitleprint{\small\raggedright \printfield{title}}%
\mysep
\myjournalprint{\small\raggedright \printlist{publisher}}%
\mysep
\myvolprint{\addspace}%
\mysep
\mypageprint{\addspace}%
\mysep
\mynoteprint{\small\raggedright \printfield{note}}%
\finentry}
\DeclareBibliographyDriver{article}{%
\myauthorprint{\small\raggedright \printnames{author}}%
\mysep
\myyearprint{\small\raggedright \printfield{year}}%
\mysep
\mytitleprint{\small\raggedright \printfield{title}}%
\mysep
\myjournalprint{\small\raggedright \printfield{journaltitle}}%
\mysep
\myvolprint{\small\raggedright \printfield{volume}}%
\mysep
\mypageprint{\small\raggedright \printfield{pages}}%
\mysep
%\frame{% only for test purpose
\mynoteprint{\small\raggedright \printfield{note}}%}%
\finentry}
\addbibresource{BiblatexTableExample.bib}
\addbibresource{biblatex-examples.bib} % only for test purpose
\begin{document}
To achieve incentive compatibility, the auction winner has to pay the second highest price \cite{Vickrey1961}.
A good introduction to graph algorithms can be found in \cite{Golumbic2004}.
Only for test purpose: \cite{knuth:ct} \cite{angenendt} \cite{aristotle:rhetoric}
\cite{aristotle:anima}
\cite{coleridge}
\cite{knuth:ct:d}
\cite{yoon}
\cite{gillies}
\cite{baez/article}
\defbibnote{myprenote}{\noindent\mybibheader}
\AddThispageHook{\AtBeginShipout{\mybibheader}}
\printbibliography[prenote=myprenote]
\end{document}
编辑:
在评论中,OP 要求垂直和水平标尺的第一列为序列号。
这是我能做的最好的(但需要一些专家才能做得更好):
\begin{filecontents}{BiblatexTableExample.bib}
@ARTICLE{Vickrey1961,
AUTHOR = {W. Vickrey},
TITLE = {Counterspeculation, auctions and sealed tenders},
JOURNAL = {Journal of Finance},
YEAR = {1961},
volume = {16},
pages = {8--37},
note = {a1b2c3}
}
@BOOK{Golumbic2004,
AUTHOR = {M. C. Golumbic},
TITLE = {Algorithmic Graph Theory and Perfect Graphs},
PUBLISHER = {Elsevier Science},
YEAR = {2004},
edition = {2nd Edition},
note={ABC}
}
\end{filecontents}
\documentclass{article}
\usepackage[backend=biber,bibstyle=numeric,citestyle=authoryear]{biblatex}
\usepackage{array}
\usepackage{makecell}
%\usepackage{showframe} % only for test purpose
\usepackage{atbegshi}
\usepackage{everypage}
% new commands to avoid repeating widths
\newcommand{\mysep}{\hspace{.01\textwidth}}
\newcommand{\mythickrule}{\hrule height .7pt}
\newcommand{\mynumberprint}[1]{\makecell[t{p{.05\textwidth}}]{#1}}%
\newcommand{\myauthorprint}[1]{\makecell[t{p{.14\textwidth}}]{#1}}%
\newcommand{\myyearprint}[1]{\makecell[t{p{.07\textwidth}}]{#1}}%
\newcommand{\mytitleprint}[1]{\makecell[t{p{.23\textwidth}}]{#1}}%
\newcommand{\myjournalprint}[1]{\makecell[t{p{.19\textwidth}}]{#1}}%
\newcommand{\myvolprint}[1]{\makecell[t{p{.06\textwidth}}]{#1}}%
\newcommand{\mypageprint}[1]{\makecell[t{p{.07\textwidth}}]{#1}}%
\newcommand{\mynoteprint}[1]{\makecell[t{p{.10\textwidth}}]{#1}}%
\newcommand{\mybibheader}{%
\mythickrule
\vskip1.2\itemsep
\mynumberprint{No.}%
\hspace{.23cm}
%\frame{% for testing purpose only
\myauthorprint{Authors}%}%
\mysep
\myyearprint{Year}%
\mysep
\mytitleprint{Title}%
\mysep
\myjournalprint{Journal}%
\mysep
\myvolprint{Vol. No.}%
\mysep
\mypageprint{Page No.}%
\mysep
\mynoteprint{Note}%
\vskip\itemsep
\mythickrule}
% bib items separation
\setlength\bibitemsep{1.7\itemsep}%
% small serial number
\DeclareFieldFormat{labelnumberwidth}{\mynumberprint{\small \raggedleft #1.}}
% remove dot after year
\renewcommand{\labelnamepunct}{\addspace}
% normal text title (no italics, no ")
\DeclareFieldFormat[article,book]{title}{#1}
% remove dot after title
\renewcommand*{\newunitpunct}{\addspace}
% publisher in italics
\DeclareListFormat[book]{publisher}{\textit{#1}}
% journaltitle in italics
\DeclareFieldFormat[article]{journaltitle}{\textit{#1}}
% remove dot after volume
\renewcommand{\bibpagespunct}{\addspace}
% remove pp.
\DeclareFieldFormat[article]{pages}{#1}
% remove dot at the end of the bib entry
\renewcommand{\finentrypunct}{}
\DeclareBibliographyDriver{book}{%
\myauthorprint{\small\raggedright \printnames{author}}%
\mysep
\myyearprint{\small\raggedright \printfield{year}}%
\mysep
\mytitleprint{\small\raggedright \printfield{title}}%
\mysep
\myjournalprint{\small\raggedright \printlist{publisher}}%
\mysep
\myvolprint{\addspace}%
\mysep
\mypageprint{\addspace}%
\mysep
\mynoteprint{\small\raggedright \printfield{note}}%
\finentry}
\DeclareBibliographyDriver{article}{%
\myauthorprint{\small\raggedright \printnames{author}}%
\mysep
\myyearprint{\small\raggedright \printfield{year}}%
\mysep
\mytitleprint{\small\raggedright \printfield{title}}%
\mysep
\myjournalprint{\small\raggedright \printfield{journaltitle}}%
\mysep
\myvolprint{\small\raggedright \printfield{volume}}%
\mysep
\mypageprint{\small\raggedright \printfield{pages}}%
\mysep
%\frame{% only for test purpose
\mynoteprint{\small\raggedright \printfield{note}}%}%
\finentry}
\addbibresource{BiblatexTableExample.bib}
\addbibresource{biblatex-examples.bib} % only for test purpose
\begin{document}
To achieve incentive compatibility, the auction winner has to pay the second highest price \cite{Vickrey1961}.
A good introduction to graph algorithms can be found in \cite{Golumbic2004}.
Only for test purpose: \cite{knuth:ct} \cite{angenendt} \cite{aristotle:rhetoric}
\cite{aristotle:anima}
\cite{coleridge}
\cite{knuth:ct:d}
\cite{yoon}
\cite{gillies}
\cite{baez/article}
\defbibnote{myprenote}{\noindent\mybibheader}
\AddThispageHook{\AtBeginShipout{\mybibheader}}
\printbibliography[prenote=myprenote]
\mythickrule
\end{document}