我有一组 TeX 文档{d}
。这些文档需要相互引用。为此,我有一个 ,references.bib
其中每个文档都有一个条目{d}
。在 的每个元素内{d}
,都有\cite
引用 中的元素的各种行references.bib
。
现在我写了一篇博士论文,我想把这些项目{d}
作为附录包含在内。如果我\cite
把它们包括在内,它们会在文本中显示为例如“[4]”,这不是人们通常引用附录的方式。我希望对附录的引用显示为例如“附录 A”。我们如何实现这一点?
如果我将\label
这些元素添加{d}
到\ref
正文中,我就能得到我们想要的结果。但是,当附录相互引用时,这种方法会失败,因为它们\cite
在单独编译时和作为\ref
博士论文的一部分时都必须使用。
有解决方案吗?我想到最好的办法是将博士论文单独列出appendices.bib
。那么问题来了,如何让命令\cite
只显示引用者的标题,同时防止引用的项目出现在参考书目中?
最小工作示例
以下文件只是一组独立文档({d}
上面描述的那组)。在 bananaMilkshake.tex 中,有一个使用 的正常引用\cite
。
./banana-docs/bananaMilkshake.tex
\documentclass{report}
\usepackage{import}
\begin{document}
\subimport*{./}{bananaMilkshake-content}
\bibliographystyle{plain}
\bibliography{references}
\end{document}
./banana-docs/bananaMilkshake-content.tex
First, peel a banana \cite{Sank:peelBanana}.
Then put it in the blender.
./banana-docs/peelBanana.tex
\documentclass{report}
\usepackage{import}
\begin{document}
\subimport*{./}{peelBanana-content}
\end{document}
./banana-docs/peelBanana-content.tex
Separate the top part and then pull the peel off in three sections.
./banana-docs/references.bib
@misc{Sank:bananaMilkshake,
author = {Sank, Daniel},
title={How to Make a Banana Milkshake}
}
@misc{Sank:peelBanana,
author = {Sank, Daniel},
title={How to Peel a Banana}
}
现在我们有一篇博士论文,需要使用上面定义的文档作为附录:
./论文.tex
\documentclass{report}
\usepackage{import}
\usepackage{appendix}
\begin{document}
For details on how to make a banana milkshake, see appendix \ref{appendix:bananaMilkshake}.
\subimport*{./}{appendix}
\bibliographystyle{plain}
\bibliography{banana-docs/references}
\end{document}
./appendix.tex
\begin{appendices}
\chapter{How to Make a Banana Milkshake} \label{appendix:bananaMilkshake}
\subimport*{./banana-docs/}{bananaMilkshake-content}
\chapter{How to Peel a Banana} \label{appendix:peelBanana}
\subimport*{./banana-docs/}{peelBanana-content}
\end{appendices}
如果你构建 thesis.tex,你会发现一行
For details on how to make a banana milkshake, see appendix A.
这很好。然而,在附录 A 中,你会看到
First, peel a banana [1]. Then put it in the blender.
在参考书目中你会看到
[1] Daniel Sank. How to peel a banana.
这可不太好。您希望能够\ref
从附录 A 中转到附录 B,但您做不到,因为 in\ref
没有bananaMilkshake.tex
任何内容可以指向。
有一种方法几乎可行,那就是为论文和\ref
其中的附录创建一个单独的 .bib 文件。这至少会将“附录 A”放入参考书目中,但这并不是我们想要的。
答案1
我已经想出了如何做到这一点。基本思路是使用自制的宏名代替\cite
并根据我们是编译为独立文档还是论文的一部分来以不同的方式定义该宏。下面显示了一个完整的示例。不要被大量的文件吓到;实际发生的事情非常简单,所以只需按照每个步骤操作即可。
/cite_as_appendix.tex
\newcommand{\mycitetype}{Appendix}
\newcommand{\mycite}[1]{
\ref{#1}
}
/cite_as_external.tex
\newcommand{\mycitetype}{Ref.}
\newcommand{\mycite}[1]{
\cite{#1}
}
/packages.tex
\usepackage{import}
/references-local.bib
@misc{qubits,
author = {Sank, Daniel},
title = {Qubits}
}
@misc{iq_mixer,
author = {Sank, Daniel},
title = {IQ mixer}
}
/iq-mixer/as-article.tex
\documentclass{article}
\input{../packages.tex}
\input{../cite_as_external.tex}
\author{Daniel Sank}
\title{IQ Mixer}
\begin{document}
\maketitle
\subimport*{./}{content}
\bibliographystyle{plain} \bibliography{../references-local}
\end{document}
/iq-mixer/as-appendix.tex
\chapter{IQ Mixer} \label{iq_mixer}
\input{content.tex}
/iq-mixer/content.tex
This is a discussion of IQ mixers.
It will be useful when reading \mycitetype \mycite{qubits}.
/qubits/as-article.tex
\documentclass{article}
\input{../packages.tex}
\input{../cite_as_external.tex}
\author{Daniel Sank}
\title{Qubits}
\begin{document}
\maketitle
\subimport*{./}{content}
\bibliographystyle{plain} \bibliography{../references-local}
\end{document}
/qubits/as-appendix.tex
\chapter{Qubits} \label{qubits}
\input{content.tex}
/qubits/content.tex
This is a discussion of qubits.
You should read \mycitetype \mycite{iq_mixer} first.
/论文/main.tex
\documentclass{book}
\input{../packages.tex}
\input{../cite_as_appendix.tex}
\author{Daniel Sank} \title{Book}
\begin{document}
\maketitle
\tableofcontents
\chapter{Introduction}
This is a book about quantum computing.
\chapter{Science!}
To understand superconducting qubits, you should read \mycitetype \mycite{qubits} and \mycitetype \mycite{iq_mixer}.
\begin{appendix}
\subimport*{../iq-mixer/}{as-appendix}
\subimport*{../qubits/}{as-appendix}
\end{appendix}
\end{document}