目录包:使用目录和参考书目

目录包:使用目录和参考书目

有人嗎??

我想使用以下方法生成一个包含地址簿和参考书目(每个作为一章)的文档目录包。我尝试按照指示操​​作,但没有成功这里 有人能给我一个功能示例吗? 编译时有什么技巧吗?

非常感谢,

答案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.bibbusiness.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.bibbusiness.bib,甚至包括那些没有被“引用”的条目。这是可选的。

使用 LaTeX 编译文档一次。所有“参考”都将未定义,但这将使用目录创建 BibTeX 运行所需的信息填充 .aux 文件。

现在对 .aux 文件运行 BibTeX。BibTeX 将向您发出警告,指出常规引文(例如,此处的“article-full”)缺少数据库条目。但它将使用从目录数据库文件中找到的条目创建目录,并将其保存为 .bbl 文件。

再运行 LaTeX 两次。目录现在应该是命令所在文档的一部分\directory,并且\dir引用应该正确显示。常规引用仍然会有问号,而常规参考书目则没有。

现在将.bbl文件重命名为不同的扩展名。文档建议.dirfilename.bbl现在也是如此filename.dir。此文件包含所有目录内容。

删除前面步骤创建的所有其他辅助文件。

现在我们需要切换到参考书目,所以我们注释掉该\directorystyle命令和\nodir命令。我们将\directory命令切换为具有可选参数[dir],该参数告诉它将目录作为.dir文件而不是文件进行查找。但是,由于此命令仍会使用它应该使用的文件的名称.bbl写入文件,因此我们将参数更改为使用常规文件。否则,BibTeX 会感到困惑。.aux.bibxampl.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 滥用。

相关内容