有没有办法获得作者年份引用的两列布局,第一列标签为“(Wolfram 2002)”,第二列标签为“Wolfram,S. 2002。一种新科学。Wolfram Media,伊利诺伊州香槟市。”。
我能得到的最好的结果是标签后面直接跟着带有缩进的引用,并在以下几行中找到了一些我发现但不太理解的东西:
\usepackage[round, authoryear]{natbib}
\setcitestyle{aysep={}}
\makeatletter
\def\@lbibitem[#1]#2{%
\if\relax\@extra@b@citeb\relax\else
\@ifundefined{br@#2\@extra@b@citeb}{}{%
\@namedef{br@#2}{\@nameuse{br@#2\@extra@b@citeb}}}\fi
\@ifundefined{b@#2\@extra@b@citeb}{\def\NAT@num{}}{\NAT@parse{#2}}%
\item[\hfil\hyper@natanchorstart{#2\@extra@b@citeb}\citep{#2}%
\hyper@natanchorend]%
\NAT@ifcmd#1(@)(@)\@nil{#2}}
\makeatother
我正在使用 Bibtex 和 pdflatex。感谢您的帮助。
答案1
如果我理解正确的话,您正在寻找一个文本列和一个引用列。这可以使用边距和 biblatex 来实现。
\usepackage[backend=biber, style=authoryear]{biblatex}
\newcommand{\mycite}[1]{%
(\cite{#1})%
\marginpar{\footnotesize\fullcite{#1}}}
如果这就是你要找的
我使用了以下代码(部分借鉴自另一个问题):
\documentclass{book}
\usepackage[backend=biber, style=authoryear]{biblatex}
\usepackage[paperwidth=170mm, paperheight=240mm, left=40pt, top=40pt, textwidth=280pt, marginparsep=20pt, marginparwidth=100pt, textheight=560pt, footskip=40pt]{geometry}
\usepackage{lipsum}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@incollection{Baauw2001,
Address = {Somerville, MA},
Author = {Sergio Baauw},
Booktitle = {Proceedings of the 25th Annual Boston University Conference on Language Development},
Editor = {A. H.-J. Do and L. Dom{\'\i}nguez and A. Johansen},
Pages = {82-93},
Publisher = {Cascadilla Press},
Title = {Expletive determiners in child Dutch and Spanish},
Year = {2001}}
@article{barker1998,
Author = {Chris Barker},
Journal = {Natural Language \& Linguistic Theory},
Pages = {679-717},
Title = {Partitives, Double Genitives and Anti-Uniqueness},
Volume = {16},
Year = {1998}}
@book{Berwick1985,
Address = {Cambridge, MA},
Author = {Berwick, Robert C.},
Publisher = {MIT Press},
Title = {Acquisition of syntactic knowledge},
Year = {1985}}
@phdthesis{Carlson1977,
Author = {Carlson, Gregory N.},
School = {University of Massachusetts, Amherst},
Title = {Reference to Kinds in {E}nglish},
Year = {1977}}
\end{filecontents}
\addbibresource{\jobname}
\newcommand{\mycite}[1]{%
(\cite{#1})%
\marginpar{\footnotesize\fullcite{#1}}}
\begin{document}
\chapter{One}
\lipsum[2]Some text \mycite{Carlson1977}
\lipsum[1]
\end{document}
答案2
有几种作者年份书目样式,其中标签后跟作者,顺序按照您想要的顺序排列。 Ken Turner 的旧 Bibtex 样式列表显示了几种可能性。其中大多数使用\bibhang
尺寸(实际上是跳过,因此您可以使用胶水)来控制缩进,因此您可以通过选择任何这些样式并设置\bibhang
为足够大的尺寸来复制您引用的代码似乎正在做的事情。其他使用\bibindent
和\bibleftmargin
分别说明条目的第一行和后续每一行是什么,这是等效的。
这与您的问题描述的并不完全一致,因为作者姓名直接跟在键后面。您可以通过将标签放在足够宽的框中来强制留出足够的空白。您必须修改 Bibtex 样式代码才能做到这一点。幸运的话,以下代码将适合您:
\makeatletter
\let\ur@lbibitem=@lbibitem
\def\@lbibitem[#1]#2{
\ifempty{#1}
\ur@lbibitem[\hbox to \bibhang {#2}]{#2}
\else \ur@lbibitem[\hbox to \bibhang {\cite{#1}}]{#2}
\fi}
\makeatother
注意事项:以上内容未经测试,需要 eplain 包(它使用\ifempty
),可能会很丑陋(hbox 太宽,\cite
很可能是您想要的错误命令),并且假设\bibhang
定义正确,但并非所有 Bibtex 样式都是如此。