引用参考书目中的条目但不生成它

引用参考书目中的条目但不生成它

在评论文章中,经常会发生这样的情况:图片取自另一个文档,而该文档在宏中被提及\caption\cite如果这样的标题位于文本中第一次出现的相应图片之前\cite,则 TeX 处理标题时会增加编号。由于读者不会先阅读标题,而是继续阅读正文,直到下一个段落或标题,因此文本中的编号会有间隙。

因此,我想引用参考书目中的条目而不创建它。简单的方法\ref行不通。有什么想法吗?

更新:以下示例在文本中产生了所需的编号,但在标题中没有引用。当我使用注释版本时\caption,编号就不是我想要的了。(测试时不要忘记重新运行 bibtex)。

\begin{filecontents}{./mybib.bib}
@misc{foo,
  author={Foo},
  title={Foo},
}
@misc{bar,
  author={Bar},
  title={Bar},
}
@misc{baz,
  author={Baz},
  title={Baz},
}
\end{filecontents}

\documentclass{article}
\usepackage[super]{natbib}
\bibliographystyle{unsrtnat}
\begin{document}

\begin{figure}
  \caption{Taken from Foo\ref{foo}}
  %  \caption{Taken from Foo\cite{foo}}
  \label{fig:foo}
\end{figure}

Bar\cite{bar} and baz\cite{baz} have done some fascinating research,
which is best summarized as shown in Figure~\ref{fig:foo} (originally 
by Foo\cite{foo}).

\bibliography{./mybib}
\end{document}

答案1

natbib这是一个使用选项加载时可以使用的解决方案super;另一个使用标准 LaTeX 以及natbib选项的解决方案numbers位于底部。

\begin{filecontents}{./mybib.bib}
@misc{foo,
  author={Foo author},
  title={Foo title},
}
@misc{bar,
  author={Bar},
  title={Bar},
}
@misc{baz,
  author={Baz},
  title={Baz},
}
\end{filecontents}

\documentclass{article}
\usepackage[super]{natbib}
\bibliographystyle{unsrtnat}

% we patch the \bibcite macro to store the number of the
% citation     
\usepackage{xpatch,xstring,etoolbox}
\makeatletter
\xapptocmd{\bibcite}{%
    \StrLeft{#2}{1}[\knall]%
    \StrRemoveBraces{\knall}[\peng]
    \global\csedef{defcite@#1}{\peng}
}{}{}

% the \deferredcite macro calls up the number stored above, if available;
% it does not itself cause a citation to be created. 
\newcommand{\deferredcite}[1]{%
\ifcsdef{defcite@#1}{\textsuperscript{\csuse{defcite@#1}}}{?}}
\makeatother

\begin{document}

\begin{figure}
    \caption{Taken from Foo\deferredcite{foo}}
  \label{fig:foo}
\end{figure}

Bar\cite{bar} and baz\cite{baz} have done some fascinating research,
which is best summarized as shown in Figure~\ref{fig:foo} (originally 
by Foo\cite{foo}).

\bibliography{./mybib}
\end{document}

在此处输入图片描述

这是不带 的标准 LaTeX 的解决方案natbib。输出是相同的,只是文内引用用括号而不是上标。

\documentclass{article}
\bibliographystyle{ieeetr} % to sort in order of appearance

\usepackage{etoolbox}
\makeatletter
\let\oldbibcite\bibcite
\renewcommand{\bibcite}[2]{%
    \oldbibcite{#1}{#2}%
    \global\csedef{defcite@#1}{#2}}

\newcommand{\deferredcite}[1]{~[\ifcsdef{defcite@#1}{\csuse{defcite@#1}}{?}]}

\makeatother

\begin{document}

\begin{figure}
  \caption[Taken from Foo]{Taken from Foo\deferredcite{foo}}
  \label{fig:foo}
\end{figure}

Bar~\cite{bar} and baz~\cite{baz} have done some fascinating research,
which is best summarized as shown in Figure~\ref{fig:foo} (originally 
by Foo~\cite{foo}).

\bibliography{./mybib}
\end{document}

相关内容