在此示例中,我希望只有引用处的括号是圆的,参考文献的开头是方的。我该如何实现这一点?
使用 round withnatbib
不起作用,因为我到处都是圆括号,而且在参考文献的开头没有写作者姓名和年份,而这正是我真正想要的
我想要参考:
[作者,年份] 作者,年份,标题...
正文如下:
...(作者,年份)
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@Book{Batty:2007,
author = {Michael Batty},
title = {Cities and Complexity},
publisher = {MIT Press},
year = 2007}
\end{filecontents*}
\makeatletter
\let\@internalcite\cite
\def\cite{\def\citeauthoryear##1##2{##1, ##2}\@internalcite}
\def\shortcite{\def\citeauthoryear##1##2{##2}\@internalcite}
\def\@biblabel#1{\def\citeauthoryear##1##2{##1, ##2}[#1]\hfill}
\makeatother
\begin{document}
This a citation \cite{Batty:2007}
\bibliographystyle{apalike}
\bibliography{\jobname}
\end{document}
答案1
为了改变 BibTeX 中的某些内容,最好先查看驯服野兽。在第 4.5 点,他们写了如何将括号改为圆括号。这是针对引用和参考文献分别进行的,因此我们可以省略第一步。所以我们必须重新定义\@cite
:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@Book{Batty:2007,
author = {Michael Batty},
title = {Cities and Complexity},
publisher = {MIT Press},
year = 2007}
\end{filecontents*}
\makeatletter
\def\@cite#1#2{({#1\if@tempswa , #2\fi})}
\let\@internalcite\cite
\def\cite{\def\citeauthoryear##1##2{##1, ##2}\@internalcite}
\def\shortcite{\def\citeauthoryear##1##2{##2}\@internalcite}
\def\@biblabel#1{\def\citeauthoryear##1##2{##1, ##2}[#1]\hfill}
\makeatother
\begin{document}
This a citation \cite{Batty:2007}
\bibliographystyle{apalike}
\bibliography{\jobname}
\end{document}