用星号标记参考书目中的选定参考文献

用星号标记参考书目中的选定参考文献

有没有办法在参考书目部分指示/标记某些选定的参考文献。例如,我想在正文中使用简单的 natbib 引文(作者-年份)(因为它们是标准的)。但是在我的参考文献列表(参考书目)中,我想在主要名称前用星号标记一些参考文献(不是全部)。这是一个简短的例子,但如何添加星号?我是否需要为 @article 引入一个新字段(例如标记)并定义一个新的参考书目样式来解释新字段?

\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{test,
author={Name},
journal={Journal},
title={TITLE},
year={2011},
}
\end{filecontents}
\documentclass{article}
\usepackage[authoryear]{natbib}
\bibliographystyle{apalike}
\begin{document}
\cite{test}

\bibliography{test}

\end{document}

答案1

这是一个与 BibTeX 和引文管理包配合使用的解决方案natbib。不可否认,它相当笨拙。如果有人有更好的解决方案,请提出来。

解决方案由三部分组成。首先,在文件顶部添加以下几行.bib

@preamble{ " \newcommand{\noopsort}[1]{} "
         # " \newcommand{\bibstar}{\textsuperscript{*}} " }

如果需要,修改 的定义,\bibstar使其输出符合您的需要。该宏\noopsort似乎什么也不做,但很快就会明白,它对于排序目的。

其次,对于参考文献部分中应该以“星号”为前缀的每个条目,请按如下方式修改(第一)作者的姓名:不要改为:

author = {Henry Jones},

author = {Henry \noopsort{Jones}\bibstar{}Jones},

该指令\noopsort{Jones}确保条目将排在“Jones”的“J”下,而不是 BibTeX 决定的“ ”的排序顺序*(可能在“Z”之后)。

第三,对于每个带星号的条目,使用 提供的机制定义一个“引用别名” natbib。例如,如果 Henry Jones 的作品条目有 键jones11,则应编写

\defcitealias{jones11}{Jones (2011)}

在序言中(natbib包加载之后)。

有了这三点,就可以使用\citetalias而不是\citet引用相关条目,即写\citetalias{jones11}。(如果你使用\citet你会得到,惊喜,*Jones (2011)......)

完整示例:

在此处输入图片描述

\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@preamble{ " \newcommand{\noop}[1]{} "
         # " \newcommand{\bibstar}{\textsuperscript{*}} " }
@article{jones11,
author={Henry \noop{Jones}\bibstar{}Jones},
journal={Circularity Today},
title={Deep thoughts},
year={2011},
volume = 1,
issue  = 1,
pages  = "1-101",
}
\end{filecontents*}
\documentclass{article}
\usepackage[authoryear]{natbib}
\bibliographystyle{apalike}
\defcitealias{jones11}{Jones (2011)}
\begin{document}
\citetalias{jones11}

\bibliography{\jobname}
\end{document}

答案2

我使用的方法如下:我创建一个名为 的 sty 文件citestar.sty,修改\cite和的定义\bibitem。然后当引用需要用星号强调的参考文献时,我将其引用为\cite{key1, key2*, key3}。 的条目key2将被强调。 的内容citestar.sty如下:

% Modify the behavior of \cite and \bibitem commands such that when a
% key is followed by an astarisk (star *), the bibliography entry will have a
% star on the left margin. Example: \cite{key1,key2*,key3}. This will show
% key2 entry with a star on the margin.
%
% \usepackage{citestar}
% \begin{document}

% \cite{key1,key2*,key3}

% \begin{thebibliography}{99}
% \bibitem{key1} First reference.
% \bibitem{key2} Second reference.
% \bibitem{key3} Third reference.
% \end{thebibliography}
% \end{document}

% remove spaces from a string
\def\removeSpaces#1{\expandafter\removeSpacesA#1\relax}
\def\removeSpacesA#1{%
  \ifx\relax#1\else%
    \ifx#1\ \else#1\fi%
    \expandafter\removeSpacesA%
  \fi}

% process a single bib key, check if it ends with *. If so, remembers it.
% Then, strip the *, and put the stripped key back to the list \keysWithoutAster
\newcommand{\processSingleKey}[1]{%
    \expandafter\@checkAsterisk#1*\@nil%
}

\def\@checkAsterisk#1*#2\@nil{%
    \addToCommaSeparatedList{\keysWithoutAster}{#1}%
    \ifx\relax#2\relax% does not end with *
    \else% ends with *
       \expandafter\gdef\csname key@\removeSpaces{#1}\endcsname{}%
    \fi%
}

% Define a macro to add a string to a comma-separated list
\newcommand{\addToCommaSeparatedList}[2]{%
    \edef#1{%
        \ifx#1\empty\else#1,\fi % Add comma if the list is not empty
        #2% Append the new string
    }%
}

% Define a loop macro for comma-separated lists
\newcommand{\foreachcsv}[2]{%
  \@for\tmp:=#1\do{#2{\tmp}}%
}

% Redefine \cite to remember keys with asterisks.
\let\oldcite\cite
\renewcommand{\cite}[1]{%
  \def\keysWithoutAster{}% Clear oldkeys
  \foreachcsv{#1}{\processSingleKey}%
  \expandafter\oldcite\expandafter{\keysWithoutAster}%
}%

% Redefine \bibitem to add an asterisk to labels of remembered keys
\let\oldbibitem\bibitem
\renewcommand{\bibitem}[1]{%
    \ifcsname key@\removeSpaces{#1}\endcsname%
      \oldbibitem{#1}%
        \makebox[0pt][r]{\bfseries*\hspace*{2em}}%
        \hspace*{-7.3pt}
    \else%
        \oldbibitem{#1}%
    \fi%
}

我确信代码可以改进。特别是星号的放置方式。我不知道如何将其放置在左侧而不影响后面的间距。所以我添加了临时空间-7.3pt,这似乎有效。

相关内容