我想按照这里概述的方式整理我读过的论文https://academia.stackexchange.com/questions/10578/how-to-read-and-take-notes-on-research-papers/10616#10616。
但是写出作者和年份之类的信息让我有点烦,因为这些信息已经存在于我的全局 bib 文件中(或者应该存在)。此外,如果我在 bib 文件中更正了错误,我希望所有错误都能得到更正。有没有办法从 bib 文件中获取我的 latex 文档的信息?
因此,不要:(厚颜无耻地从上面的帖子中复制)
\section{Paper #1 Name, Authors, Date, \cite{...}}
My summary of the motivation and findings of the paper, or whatever I find interesting.
May be as short as a few sentences or as long as a page, depending on how relevant it is.
\index{an important word}
我想写类似这样的内容:
\section{\mycitetitle{citekeyfrombibfile}}
\citeurl{citekeyfrombibfile}
notes and so on
where\mycitetitle
将扩展为 Title、Authors、Year 并\citeurl
扩展为 url(如果可用)。我猜这可能是 biblatex 的一个案例,但我才刚刚开始使用它,还不确定它能做什么。
答案1
这是一个使用的解决方案biblatex
\documentclass{article}
\usepackage[hyperref]{biblatex}
\usepackage{hyperref}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{Goossens1994LaTeX,
author = {Michel Goossens and Frank Mittelbach and Alexander Samarin},
title = {The \LaTeX{} Companion, $2^{nd}$ Edition},
publisher = {Addison-Wesley},
year = {1994},
url = {www.tex.stackexchange.com}
}
\end{filecontents*}
\DeclareCiteCommand{\citepaper}[\section]
{}
{\bibyhyperref{Paper
\printfield{title},
\printnames{author},
\printfield{year}
\mkbibbrackets{\printfield{labelnumber}}}}
{}
{}
\addbibresource{\jobname.bib}
\begin{document}
\citepaper{Goossens1994LaTeX}
\end{document}
该解决方案实现了一个新的 cite 命令(\citepaper
),用于打印所需/所需的信息。
答案2
为什么不bibentry
?
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{mybib1.bib}
@book{Goossens1994LaTeX,
author = {Michel Goossens and Frank Mittelbach and Alexander Samarin},
title = {The \LaTeX{} Companion, $2^{nd}$ Edition},
publisher = {Addison-Wesley},
year = {1994{.}},
url = {www.tex.stackexchange.com}
}
\end{filecontents*}
\usepackage{natbib}
\usepackage{bibentry}
\begin{document}
\bibliographystyle{unsrtnat}
\nobibliography{mybib1}
\subsection*{\bibentry{Goossens1994LaTeX}}
\end{document}
答案3
只是为了完整性,我在等待答案时发现的另一种方法是:
\documentclass{article}
\usepackage[hyperref]{biblatex}
\usepackage{hyperref}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{Goossens1994LaTeX,
author = {Michel Goossens and Frank Mittelbach and Alexander Samarin},
title = {The \LaTeX{} Companion, $2^{nd}$ Edition},
publisher = {Addison-Wesley},
year = {1994},
url = {www.tex.stackexchange.com}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\newcommand{\mytitlecite}[1]
{\texorpdfstring{\citetitle{#1}, \citeauthor{#1}, \citeyear{#1},\cite{#1}}{#1}}
\begin{document}
\section{\href{file.pdf}{Paper} \mytitlecite{Goossens1994LaTeX}}
\end{document}
其中 file.pdf 是本地文件系统中包含论文的文件。这也可以避免 hyperref 的警告。另一个回答但是可以扩展来做到这一点,并且有一个额外的功能,即整个部分标题都是可点击的,而不仅仅是标签。