在上一个问题中(如何使用“agsm”参考书目样式将引文标注中的“et al”更改为斜体字体),Mico 的答案告诉我们将修改后的 .bst 文件放在“BibTeX 搜索的目录中”。但是,答案并没有明确说明该目录是什么以及如何更改它。(当然我知道这取决于 LaTeX 发行版的版本、用户名和操作系统,但我仍然想大致了解在使用 MiKTeX 和 Windows 时它在哪里)。
此外,我尝试重命名IEEEtranN.bst
为,IEEEtranN-mod.bst
同时将两个文件保留在 IEEE bst 文件的原始目录中。然后我使用\bibliographystyle{IEEEtranN-mod}
,但 BibTeX 似乎无法找到该文件。IEEEtranN
为什么当它们都在同一个目录中时,BibTeX 可以使用原始版本,而不能使用修改后的版本?
这是我的测试代码示例
\begin{filecontents*}{sample.bib}
@article{aldaoudeyeh2016,
title={{Photovoltaic-battery scheme to enhance PV array characteristics in partial shading conditions}},
author={Aldaoudeyeh, Al-Motasem I},
journal={IET Renewable Power Generation},
volume={10},
number={1},
pages={108--115},
year={2016},
publisher={IET}
}
@ARTICLE{wu2017,
title={{Assessing Impact of Renewable Energy Integration on System Strength Using Site-Dependent Short Circuit Ratio}},
author={Wu, Di and Li, Gangan and Javadi, Milad and Malyscheff, Alexander M and Hong, Mingguo and Jiang, John Ning},
journal={IEEE Transactions on Sustainable Energy},
year={2017},
publisher={IEEE}
}
@article{wu2019,
title={A method to identify weak points of interconnection of renewable energy resources},
author={Wu, Di and Aldaoudeyeh, Al Motasem and Javadi, Milad and Ma, Feng and Tan, Jin and Jiang, John N and others},
journal={International Journal of Electrical Power \& Energy Systems},
volume={110},
pages={72--82},
year={2019},
publisher={Elsevier}
}
\end{filecontents*}
\documentclass[]{book}
\usepackage[x11names, svgnames]{xcolor}
%\usepackage[square, nonamebreak, sort&compress, comma]{natbib} % For IEEE
\usepackage[round]{natbib}
\newcommand{\citeauyear}[1]{%
\citeauthor{#1}~[\citeyear{#1}] [Ref. \citenum{#1}]}
% C:\Users\almot\AppData\Local\Programs\MiKTeX 2.9\bibtex\bst\ieeetran
\usepackage{hyperref}
\hypersetup{citecolor=SlateBlue2, citebordercolor=SlateBlue2,
linkbordercolor=DodgerBlue3, linkcolor=DodgerBlue3, urlcolor=Blue1, colorlinks=true}
\begin{document}
\citeauyear{wu2017}, \cite{aldaoudeyeh2016,wu2019,wu2017}
\newpage
\bibliographystyle{IEEEtranN}
\bibliography{sample}
\end{document}
答案1
将文件放在 texmf 文件夹中。此文件夹的位置取决于操作系统
Linux的:
~/.texmf/bibtex/bst/
苹果:
~/Library/texmf/bibtex/bst/
(如果这些文件夹结构尚不存在,请创建必要的文件夹)
如果将文件放置在那里后仍找不到,请texhash
从命令行运行
答案2
Kpathsea 优先级的许多变化可以通过 EnvVars 控制,对于 bibtex,有两个专用的(其他与包相关的提到 TEXBIB 和 MLBIBINPUTS,但这些可能更特定于程序)
文档的 bibtex 文件的默认位置与该文档位于同一目录中。这里还描述了一组复杂的搜索https://tug.org/texlive/doc/texlive-en/texlive-en.html#x1-550007.1
最好将标准 bib 变量与 TDS 个人默认值对齐(见下文),这些示例仅供参考,不一定是真正的工作示例,您需要根据自己的使用情况进行调整。
../ 对于带有 \input\subdirectory 的项目中的父文件夹很有用 ./ 包括当前文件夹
在 Windows 中,对每个条目仅使用一次“setx”(它将在重启时生效)
setx BIBINPUTS=../;./;%HOME%/texmf/bibtex/bib/misc;
setx BSTINPUTS=../;./;%HOME%/texmf/bibtex/bst/misc;
Windows 用户注销/登录可能不够。例如,类似于其他支持论坛的建议“编辑~/.bash_profile 后,您[可能]必须重新启动您的 Mac。”
您可以使用 TEXINPUTS.bibtex=(见下文),但这可能有点过度,而且可能更难管理
路径顺序如 '.:$TEXMF//',将强制 ./texmf.cnf 覆盖 $TEXMF/tex/texmf.cnf 或以下路径
这是要求您将覆盖或丢失的文件放置在 .tex 目录中的常见原因
以下只是一小部分可以排序的覆盖位置
latex2e_inputs = .:$TEXMF/tex/latex//:$TEXMF/tex//
TEXINPUTS.latex2e = $latex2e_inputs % 将在 latex2e 编译时覆盖 TEXINPUTS=
TEXINPUTS = .:$TEXMF/tex// 应覆盖配置文件,如上所示
TEXMFCNF 配置文件(例如 config.ps 或 texmf.cnf)应覆盖默认值
TeX TDS 兼容系统的默认值(Mac TeX / MiKTeX / TeX Live / W32TeX 等)
/usr/local/share/texmf/ = TDS 根目录(某些系统(例如 Windows)的路径会有所不同)
/usr/local/share/texmf/bibtex/bib/base/(例如“xampl.bib”)
/usr/local/share/texmf/bibtex/bib/misc/单文件数据库
/usr/local/share/texmf/bibtex/bib/pkg/软件包的名称
/usr/local/share/texmf/bibtex/bst/base/(例如“plain.bst”、“acm.bst”)
/usr/local/share/texmf/bibtex/bst/misc/单文件数据库
/usr/local/share/texmf/bibtex/bst/pkg/软件包的名称
如果不存在这些系统默认值,则唯一始终有效的是当前目录或 MiKTeX 在其 texmf 路径中设置的任何目录,但结构应该是 TDS,因此您需要检查 %HOME% 位置,然后添加一个 texmf 文件夹,然后添加一个 bibtex 子文件夹,在该 bib 和 bst 文件夹中,都添加一个 misc 子文件夹
在 MiKTeX 中你指向并添加文本文件位于 %HOME%