TeXstudio 编译书目与命令行 LuaLaTeX 不同

TeXstudio 编译书目与命令行 LuaLaTeX 不同

我有以下 MWE,它创建了一个自定义书目

\documentclass[12pt]{report}
\usepackage{hyperref} % 
\hypersetup{
    colorlinks=true,
    linkcolor=[rgb]{0.4,0.8,0.9},
    filecolor=magenta,
    urlcolor=cyan,
}

%
%   Bibliography stuff
%
\usepackage[backend=biber,maxbibnames=99]{biblatex}

\begin{filecontents*}{biblatex-dm.cfg}
    \DeclareDatamodelFields[type=field,datatype=verbatim]{pmid}
    \DeclareDatamodelEntryfields{pmid}
    \DeclareDatamodelFields[type=field,datatype=verbatim]{pmcid}
    \DeclareDatamodelEntryfields{pmcid}
\end{filecontents*}

\DeclareFieldFormat{eprint:pmcid}{%
    PMCID\addcolon\space
    \ifhyperref
    {\href{http://www.ncbi.nlm.nih.gov/pmc/articles/#1}{\nolinkurl{#1}}}
    {\nolinkurl{#1}}}
\DeclareFieldAlias{eprint:PMC}{eprint:pmcid}
\DeclareFieldAlias{eprint:PMCID}{eprint:pmcid}
\DeclareFieldAlias{eprint:pmc}{eprint:pmcid}
\DeclareFieldAlias{pmcid}{eprint:pmcid}
\DeclareFieldAlias{pmid}{eprint:pubmed}
\DeclareFieldAlias{eprint:pmid}{eprint:pubmed}

\renewbibmacro*{doi+eprint+url}{%
    \iftoggle{bbx:doi}
    {\printfield{doi}}
    {}%
    \newunit\newblock
    \printfield{pmcid}%
    \newunit\newblock
    \printfield{pmid}%
    \newunit\newblock
    \iftoggle{bbx:eprint}
    {\usebibmacro{eprint}}
    {}%
    \newunit\newblock
    \iftoggle{bbx:url}
    {\usebibmacro{url+urldate}}
    {}}

\usepackage{filecontents}
\begin{filecontents*}{bubtest.bib}
    @article{Konietzny2017,
        langid = {english},
        title = {Dendritic {{Actin Cytoskeleton}}: {{Structure}}, {{Functions}}, and {{Regulations}}},
        volume = {11},
        issn = {1662-5102},
        doi = {10.3389/fncel.2017.00147},
        shorttitle = {Dendritic {{Actin Cytoskeleton}}},
        abstract = {Actin is a versatile and ubiquitous .},
        journaltitle = {Frontiers in Cellular Neuroscience},
        shortjournal = {Front Cell Neurosci},
        date = {2027},
        pages = {147},
        keywords = {actin,cytoskeleton,dendrites,Arp2/3-complex,cofilin,formin,protein trafficking},
        author = {Konietzny, Anja and Bär, Julia and Mikhaylova, Marina},
        eprinttype = {pmid},
        eprint = {28572759},
        pmcid = {PMC5435805}
    }
\end{filecontents*}
\addbibresource{bubtest.bib}


\begin{document}
    Here is some contenty content \parencite{Konietzny2017}

    \printbibliography
\end{document}

当我在编辑器 TeXstudio 中编译此文件时,编译正确。我的参考书目中同时出现了 PMCID 和 PMID。

但是,如果我重新开始(删除所有 .aux 文件等)并通过命令行 lualatex 编译文档,它就不起作用。

这些是我运行的命令

lualatex document.tex
biber document
lualatex document.tex

我查看过,在 TeXstudio 中唯一看到的命令是:

lualatex -synctex=1 -interaction=nonstopmode %.tex

我尝试使用这些选项运行命令行,结果相同。TeXstudio 的编译方式一定不同。

我如何才能确定要使用哪些选项,以使命令行编译工作相同?

编辑

我应该说得更清楚。它在 texstudio 和命令行中都可以编译。但它们会产生不同的参考书目。

在 TexStudio 中,我得到了这个

Anja Konietzny, Julia Br, and Marina Mikhaylova. “Dendritic Actin
Cytoskeleton: Structure, Functions, and Regulations”. In: Frontiers in
Cellular Neuroscience 11 (2027), p. 147. issn: 1662-5102. doi: 10.3389/
fncel.2017.00147. PMCID: PMC5435805. PMID: 28572759.

当我编译命令行时,我得到了这个:

Anja Konietzny, Julia Br, and Marina Mikhaylova. “Dendritic Actin
Cytoskeleton: Structure, Functions, and Regulations”. In: Frontiers in
Cellular Neuroscience 11 (2027), p. 147. issn: 1662-5102. doi: 10.3389/
fncel.2017.00147. PMID: 28572759.

请注意,在命令行上编译的第二个版本中没有 PMCID。

编辑2

这是正在使用的 texstudio .log 文件的 pastebin

https://pastebin.com/Ve497y9t

这是不起作用的命令行 lualatex .log 文件的 pastebin

https://pastebin.com/ddsT79Vr

这两个文件确实说了不同数量的“pdf对象”,但我不知道那是什么意思。

答案1

您的问题可以通过在开始时额外运行 lualatex 来解决。因此您必须运行:

lualatex document.tex
lualatex document.tex
biber document
lualatex document.tex
lualatex document.tex

第一次运行生成文件 biblatex-dm.cfg,该文件在第二次运行中用于生成 biber 的输入,而 biber 则生成最后几次 lualatex 运行中包含的参考书目。

您的问题是,在第一次运行期间,lualatex 尚未找到 biblatex-dm.cfg,因此在生成 biber 输入时会忽略它。TeXstudio 可能没有出现此问题,因为您之前使用 TeXstudio 编译了文档,因此该文件已经存在。

相关内容