答案1
我以前从未使用过该软件包,但您的问题让我很好奇。我才刚刚开始尝试,但以下是我能弄清楚的内容。
使用它在同一个文档中创建一个目录,在该目录中你还可以使用 bibtex 来获取参考书目。非常复杂的过程。部分原因是该软件包在底层使用 BibTeX 和 .bib 文件用于非标准用途,并且无法同时以 BibTeX 方式和常规方式使用 BibTeX在同一次通行中。
我假设您或多或少知道 BibTeX 的工作原理。第一次运行 LaTeX 会将引文数据 (via \cite
)、样式数据 (via \bibliographystyle
) 和所用 bib 文件的名称 (via \bibliography
)写入.aux
文件。在文件上运行 BibTeX.aux
以将参考书目创建为.bbl
文件。然后再运行 LaTeX 两次:第一次将.bbl
文件插入文档,然后再次将其书目项目链接到引文。
考虑一下目录包的命令如何替换 BibTeX 命令是很有用的:
- 类似这样的命令
\dir{...}
是引用命令之上的一层,例如\cite{...}
并替换它们 \directorystyle{...}
是其上的一层\bibliographystyle{...}
并取代它\directory{...}
建立在\bibliography{...}
命令之上;此命令既设置用于目录的文件的名称.bib
,也设置目录的位置
以下是使用 BiBTeX 的两种方式的示例工作流程。关于我的示例的一些说明:
- 在我的示例中,我使用了书籍类,因为您提到了章节,所以我们需要一个包含章节的文档类。我认为这并不重要。
- 我使用中断选项加载目录,但您需要阅读文档以了解您需要哪些选项。
- 我使用软件包的示例
family.bib
和business.bib
文件作为目录条目。它们安装在我的 TeXlive 发行版中/usr/share/texmf-dist/bibtex/bib/directory
,但您也可以从 [tarball](( 下载并提取它们http://www.geuz.org/directory/src/directory-1.20.tgz) 来自您链接到的 geuz.org 页面,该页面也包含这些文件。您需要为目录项创建类似的文件。 - 这
xampl.bib
只是一个带有常规书目数据的示例 .bib 文件;它位于我的 TeXlive 发行版中/usr/share/texmf-dist/bibtex/bib/base
,但您可以替换您自己的文件,或者使用不同于普通的样式(也许?)
让我们从这个文档开始:
\documentclass{book}
\usepackage[break]{directory}
\directorystyle{address}
\begin{document}
\chapter{A Normal Chapter}
In this chapter, we will refer to \dir{d.e.knu}---someone in the directory.
And then we will a paper: \cite{article-full}.
\chapter*{Directory}
% Use these if you want to include *everything* in the bib files
\nodir{*}
%\nocite{*}
\directory{family,business}
%\directory[dir]{xampl}
%\bibliographystyle{plain}
%\bibliography{xampl}
\end{document}
这里我们既有目录命令,也有参考书目命令。不过,我注释掉了参考书目命令,因为我们首先要完成目录。使用标准 BibTeX,您不能同时启用多种参考书目样式(目录样式计数)或不同的参考书目数据库,因此在我们执行目录步骤时,\bibliographystyle
和\bibliography
命令被注释掉了。
我\nodir{*}
这里有全部两个 .bib 文件中的条目,分别命名为\directory
:family.bib
和business.bib
,甚至包括那些没有被“引用”的条目。这是可选的。
使用 LaTeX 编译文档一次。所有“参考”都将未定义,但这将使用目录创建 BibTeX 运行所需的信息填充 .aux 文件。
现在对 .aux 文件运行 BibTeX。BibTeX 将向您发出警告,指出常规引文(例如,此处的“article-full”)缺少数据库条目。但它将使用从目录数据库文件中找到的条目创建目录,并将其保存为 .bbl 文件。
再运行 LaTeX 两次。目录现在应该是命令所在文档的一部分\directory
,并且\dir
引用应该正确显示。常规引用仍然会有问号,而常规参考书目则没有。
现在将.bbl
文件重命名为不同的扩展名。文档建议.dir
。filename.bbl
现在也是如此filename.dir
。此文件包含所有目录内容。
删除前面步骤创建的所有其他辅助文件。
现在我们需要切换到参考书目,所以我们注释掉该\directorystyle
命令和\nodir
命令。我们将\directory
命令切换为具有可选参数[dir]
,该参数告诉它将目录作为.dir
文件而不是文件进行查找。但是,由于此命令仍会使用它应该使用的文件的名称.bbl
写入文件,因此我们将参数更改为使用常规文件。否则,BibTeX 会感到困惑。.aux
.bib
xampl
.bib
最后我们取消注释\bibliographystyle
和\bibliography
命令。如果我们想在新.bib
文件中包括所有内容,我们可以取消注释/使用该\nocite
行。
我们的文档现在如下所示:
\documentclass{book}
\usepackage[break]{directory}
%\directorystyle{address}
\begin{document}
\chapter{A Normal Chapter}
In this chapter, we will refer to \dir{d.e.knu}---someone in the directory.
And then we will a paper: \cite{article-full}.
\chapter*{Directory}
% Use these if you want to include *everything* in the bib files
%\nodir{*}
\nocite{*}
%\directory{family,business}
\directory[dir]{xampl}
\bibliographystyle{plain}
\bibliography{xampl}
\end{document}
再次运行 LaTeX。现在.aux
文件将包含 BibTeX 所需的常规引用。
在文件上运行 BibTeX .aux
。您可能会收到错误消息,提示有多个 bibdata 命令(辅助文件中的命令告诉它要使用哪个 bib 文件),因为您在同一个文件中同时拥有和\directory
,\bibliography
但我不确定这是否有帮助。但是它应该创建一个新.bbl
文件,这次包含参考书目。
再运行两次 LaTeX。现在您既有目录,又有参考书目。恭喜。
如果您要添加到目录中,则必须重新执行此操作。
这值得吗?可能不值得。
这不是一个基于意见的网站,但站在你的立场上,我会强烈考虑采用与使用这个疯狂系统不同的方法,特别是如果你还没有花时间将你的目录信息转换为这种奇怪的 .bib 格式。也许这个过程可以编写脚本,但即使这样也不容易。
如果你的目录信息是 .csv 文件,请考虑使用类似csvsimple创建目录,而不是将此包与 bibtex 一起使用。如果可以,还可以考虑将 lua 脚本与 lualatex 一起使用,例如,使用 lua json 包读取目录信息的 json 版本,并使用原始 LaTeX 命令插入相应的条目。在外部执行其他类型的脚本以从目录中创建 LaTeX 标记。尽一切努力避免这种荒谬的 BibTeX 滥用。