我正在使用 Audrey 建议的代码这个帖子以便制作一份表格式书目,并对其进行如下修改。
当然,作者姓名应该打印在第一列,其他内容都打印在第二列,但第二列却重复了姓名。我希望进行的第二项修改是在标题和表格之间添加一些文本。
\documentclass[12pt,a4paper,oneside]{memoir}
\usepackage[backend=biber,style=biblatex-swiss-legal-general]{biblatex}
\usepackage{etoolbox}
\usepackage{chngcntr}
\usepackage{csquotes}
\usepackage{array}
\usepackage{ragged2e}
\newcolumntype{P}[1]{>{\raggedright\hspace{0pt}}p{#1}}
\usepackage{multicol}
\usepackage{etoolbox}
\renewcommand{\mkbibnamefirst}[1]{\textsc{#1}}
\renewcommand{\mkbibnamelast}[1]{\textsc{#1}}
\renewcommand{\mkbibnameprefix}[1]{\textsc{#1}}
\renewcommand{\mkbibnameaffix}[1]{\textsc{#1}}
\makeatletter
% user-level command for printing tabular bibliography
\let\printbibtabular\printbibliography
\patchcmd{\printbibtabular}{\blx@printbibliography}{\bbx@printbibtabular}{}{}
\patchcmd{\printbibtabular}{\blx@printbibliography}{\bbx@printbibtabular}{}{}
\let\bbx@printbibtabular\blx@printbibliography
\patchcmd{\bbx@printbibtabular}{\blx@bibliography}{\bbx@bibtabular}{}{}
\patchcmd{\bbx@printbibtabular}
{\def\blx@theenv{bibliography}}{\def\blx@theenv{bibtabular}}{}{}
% underlying macros
\def\bbx@bibtabular#1{%
\blx@bibheading\blx@theheading\blx@thetitle
\blx@bibnote\blx@theprenote
\begingroup
\blx@bibinit
\let\@noitemerr\@empty
\let\blx@noitem\blx@warn@bibempty
\ifnum\bibinitsep=\z@
\let\blx@initsep\relax
\fi
\ifnum\bibnamesep=\z@
\let\blx@namesep\relax
\fi
\csuse{blx@hook@bibinit}%
% copy filtered list of entries to internal list macro
\def\blx@do##1{%
\blx@ifdata{##1}{%
\begingroup
\blx@getdata{##1}
\blx@bibcheck
\iftoggle{blx@skipentry}{}{%
\global\let\blx@noitem\@empty
\listadd\blx@tempa{##1}}%
\endgroup}{}}
\let\blx@done\relax
\blx@listloop{#1}
% tabular output for each item in list macro
\def\do##1{\bbx@tab@label{##1} & \bbx@tab@item{##1} \\}
\def\do##1{\bbx@tab@label{##1} & \bbx@tab@item{##1} \\}
\csuse{blx@env@\blx@theenv}%
\dolistloop{\blx@tempa}
\csuse{blx@endenv@\blx@theenv}%
\blx@bibnote\blx@thepostnote
\endgroup}
\def\bbx@tab@label#1{%
\begingroup
\blx@getdata{#1}%
\blx@setoptions@type\abx@field@entrytype
\blx@setoptions@entry
\blx@thelabelnumber
\blx@addprefixnumber
\addtocounter{instcount}\@ne
\csuse{bbx@tabenv@\blx@theenv}\relax
\endgroup}
\def\bbx@tab@item#1{%
\begingroup
\blx@getdata{#1}%
\blx@setoptions@type\abx@field@entrytype
\blx@setoptions@entry
\csuse{blx@item@\blx@theenv}\relax
\blx@initsep
\blx@namesep
\csuse{blx@hook@bibitem}%
\blx@execute
\blx@initunit
\blx@anchor
\blx@beglang
\bibsentence
\blx@pagetracker
\blx@driver\abx@field@entrytype
\blx@postpunct
\blx@endlang
\endgroup}
% user-level command for defining tabular bibliography format
\newrobustcmd*{\defbibtabular}[5]{%
\long\csdef{blx@env@#1}{#2}%
\long\csdef{blx@endenv@#1}{#3}%
\long\csdef{bbx@tabenv@#1}{#4}%
\long\csdef{blx@item@#1}{#5}}
% user-level access to some entry options
\def\useeditorfalse{\togglefalse{blx@useeditor}}
\def\usetranslatorfalse{\togglefalse{blx@usetranslator}}
\makeatother
% sortname labels (a robust style should add provision for missing labelnames)
\newbibmacro*{sortname}{%
\renewcommand*{\multinamedelim}{\addslash\break}%
\let\finalnamedelim\multinamedelim
\printtext{\printnames[last-first]{labelname}}}
% bibitem hook to suppress redundant sortname list
\newbibmacro*{omitsortname}{%
\ifnameundef{labelname}{}{%
\ifnameundef{author}
{\ifnameundef{editor}
{\ifusetranslator{\clearname{translator}}{}}}
{\clearname{editor}}
{\clearname{author}}%
\useeditorfalse%
\usetranslatorfalse}}
% demo new tabular bibliography format
\defbibtabular{bibtabular}
{\setlength{\tabcolsep}{8pt}\begin{tabular}{@{}P{5.5cm} >{\raggedright\arraybackslash}p{9cm}}}
{\end{tabular}}
{\usebibmacro{sortname}}
{\usebibmacro{omitsortname}}
% add multiline labels in default bibliography format
\defbibenvironment{bibliography}
{\list
{\usebibmacro{sortname}}
{\setlength{\labelwidth}{0.3\textwidth}%
\setlength{\leftmargin}{\labelwidth}%
\setlength{\labelsep}{\biblabelsep}%
\addtolength{\leftmargin}{\labelsep}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}}%
\renewcommand*{\makelabel}[1]{%
\nobreak\strut\smash{\parbox[t]\labelwidth{\raggedright##1}}}}
{\endlist}
{\item\usebibmacro{omitsortname}}
\addbibresource{biblatex-examples.bib}
\renewcommand{\cmd}[1]{\texttt{\textbackslash #1}}
\begin{document}
\printbibtabular
\cite{vangennep:trans,companion,bertram}
\end{document}
感谢您的帮助。