以下问题这个。
我有一份很长的文档,末尾有一个(单一)参考书目。出于某种原因,我在文档的两个不同位置引用了 3 个来源,需要当场为这 3 个条目排版参考书目。这些来源是不是在全球书目中。我该怎么做?
我正在使用 bibtex,但没有使用 biblatex。(目前。)
另外,我对排版引用键或参考书目标题不感兴趣。这些可以在解决方案中,我只是为了自己的目的而将其删除。
我目前的想法:使用multibib
:
\usepackage{multibib}
\newcites{acks}{Acknowledgement page references}
\bibliographystyleacks{alpha}
...
\nociteacks{GKNR-foracks}
\nociteacks{FR2011-foracks}
\nociteacks{FR2007-foracks}
\begingroup
\renewcommand{\section}[2]{}%
\renewcommand{\chapter}[2]{}%
\bibliographyacks{front/acks}
\endgroup
问题是,我并不想真正发出\bibliographyacks
命令来排版参考书目 - 主要是因为我不需要引用键,也不需要缩进等。我希望能够做一些类似于解决方案的事情我的另一个问题;这使我能够轻松地摆弄 bibitem、将其括入框架/小页面、更改大小等。
答案1
好的,我找到了一个解决方案,它也应该清楚地表明我的意思。
% \butcheredbibliography - inserts an on-the-spot 'bibliography' -
% no title, no new section/chapter etc. - with no cite keys, smaller
% font and enclosed in a frame. Usable on the acknowledgement page
% of your thesis. This \nocite{}'s everything in the bib file, so
% have one with just those entries you need, or otherwise do your
% own nocites.
%
% arguments:
% #1 the multibib bibliography name (appended to certain commands)
% #2 the bibliography filename/s
%
\newsavebox{\butcheredbib@box}
\newcommand{\butcheredbibliography}[2]{
\makeatletter
\ifdefined\butcheredbib@acks
% already used the #1 bibliography's source file/s, so
% no need to re-indicate all items are necessary
\else
\@nameuse{nocite#1}{*} % e.g. \nociteacks{*}
\fi
\begingroup
\let\etalchar\@undefined
\def\thebibliography##1{%
\begin{center}%
\begin{spacing}{1}%
\begin{lrbox}{\butcheredbib@box}%
\footnotesize
\begin{minipage}{0.9\textwidth}%
\begin{list}{}{%
\setlength{\leftmargin}{0in}%
\setlength{\rightmargin}{0in}%
%\setlength{\leftmargin}{0.1\textwidth}%
%\setlength{\rightmargin}{0.1\textwidth}%
}%
}%
\def\endthebibliography{%
\end{list}%
\end{minipage}%
\end{lrbox}%
\fbox{\usebox{\butcheredbib@box}}
\end{spacing}%
\end{center}%
}%
% the following works for 'alpha' bibliographystyle, and probably
% most other styles in which a non-numeric key is generated - it uses
% the generated cite key instead of the bullet
\def\bibitem[##1]##2##3\par{\item[]##3}%
% One can also filter the results, using an extra argument #3
%\def\bibitem[##1]##2##3\par{\IfSubStr{,#3,}{,##2,}{\item[]##3}{}}%
\ifdefined\butcheredbib@acks
% already used the #1 bibliography's source file/s; we're
% assuming the caller has not indicated other sources...
\@input{#1.bbl}%
\else
\@nameuse{bibliography#1}{#2}
\fi
\global\expandafter\def\csname butcheredbib@#1\endcsname{}
\endgroup%
\makeatother
}
我在博士论文中使用过两次这个东西,在希伯来语和英语致谢页上——我们的研究生院对此有一个愚蠢的要求。请参阅 英文頁面和 希伯来语页面。
无论如何,acks.bib 文件包含我需要使用的那些项目。我本可以做不同的事情(参见注释掉的过滤),但最终没有必要这样做。