我使用 创建了一个自定义 .bst 文件makebst
,并选择了在参考书目中为重复的作者姓名生成长破折号的选项(选项nmdash,nmd-3
)。(我正在使用带有 natbib 和作者年份引用的 bibtex。)这在参考书目中按预期工作(用 生成\bibliography{}
)。但是,我需要在文本的各个位置包含某些条目,然后主要单独包含。当我使用\bibentry{key}
来表示参考书目中出现的参考文献,其中作者用长破折号替换时,这里也会使用长破折号。当参考文献像那样单独打印时,破折号就没有意义了。使用我当前的设置可以避免这种情况吗?还是我必须切换到 biblatex 或其他东西?
我不知道如何在不附加 bst 文件的情况下为此创建 MWE(当然,如果它有帮助,我很乐意这样做)---抱歉。
答案1
首先,我们需要重新创建使用 makebst 创建的 bst 文件。上面的文件只是所创建latexpand
文件的精简版本(我删除了所有带有 注释的内容), 使用除(作者年份) 和之外的所有默认选项dbj
运行:tex makebst.tex
ay
nmdash
nmd-3
%% Stripped version of driver file produced from merlin.mbs
\input docstrip
\preamble
----------------------------------------
*** ***
\endpreamble
\postamble
End of customized bst file
\endpostamble
\keepsilent
\askforoverwritefalse
\askforoverwritefalse
\def\MBopts{\from{merlin.mbs}{ay,ed-au,nmdash,nmd-3,num-xser,isbn,issn,doi,xedn,nfss,}}
% You can change the name of the bst file below:
\generate{\file{tanh.bst}{\MBopts}}
\endbatchfile
将其保存为 .dbj 并对其运行 tex。您将获得一个tanh.bst
或您在该\generate
行中写的任何名称。
然后,根据Guido 的回答到
防止 natbib 中的 ibid 跟踪name.or.dash
,我们必须在新创建的 bst 文件上编辑 宏。这里有一个补丁:
--- tanh.bst 2015-12-18 13:11:40.004012993 -0200
+++ tanh_new.bst 2015-12-18 11:19:30.636130895 -0200
@@ -890,7 +890,7 @@
oldname empty$
{ s 'oldname := s }
{ s oldname =
- { "---{}---{}---" }
+ { "\andash{" oldname * "}" * }
{ s 'oldname := s }
if$
}
将其应用于patch < <patch-filename>
。仅当您的 bst 文件名为 tanh.bst 时,它才有效。但这是一行差异,因此您只需相应地编辑该行即可(在第 890 行,将 替换{ "---{}---{}---" }
为{ "\andash{" oldname * "}" * }
)。
Guido 的答案中的 MWE 一定足够了。只需 按照那里的建议\bibliography
在运行之前注释掉第一次运行即可。bibtex
\documentclass{article}
\usepackage{natbib}
\usepackage{bibentry}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Article{first,
author = "Last, First",
title = "First Title",
journal = "Journal Name",
year = 2012
}
@Article{second,
author = "Last, First",
title = "Second Title",
journal = "Journal Name",
year = 2011
}
@Article{third,
author = "More, First",
title = "Third Title",
journal = "Journal Name",
year = 2011
}
\end{filecontents}
\usepackage{etoolbox}
\newcommand{\andash}[1]{#1}
\AtBeginEnvironment{thebibliography}{\renewcommand{\andash}[1]{---{}---{}---}}
\AtEndEnvironment{thebibliography}{\renewcommand\andash[1]{#1}}
\begin{document}
Testing normal citations
\cite{first}
\cite{second}
\cite{third}
\bibliographystyle{tanh.bst}
\nobibliography{\jobname}
Testing \verb|\bibentry|
\bibentry{first}
\bibentry{second}
\bibliography{\jobname}
\section*{More Testing}
Testing \verb|\bibentry| again after the bibliography
\bibentry{second}
\bibentry{first}
\end{document}
或移至比布拉特克斯。值得付出努力。指导意见: