我有一个 Latex 文件,其中的引文键被翻译成 pdf 中的格式化文献参考(我使用 biblatex)。假设我想在 latex 文件中拥有格式化的脚注,就像我在 pdf 文本中看到的那样,无论出于什么原因。
我只能想到手动解决方案,我可以手动复制 pdf 文件中的每个参考文献,用复制的参考文献替换 latex 文件中的引用键,并适当地编辑参考文献(例如,在书名中包含 \textit{} 等)
有没有什么聪明且更快的方法来做到这一点?
编辑:我使用了一个 bib 文件,其中包含与文献参考相关的信息
编辑2:澄清一下:假设我使用这里的最小示例和 bib 文件(最基本的 biblatex 示例)
\documentclass[a4paper,11pt]{article}
\usepackage[style=numeric,backend=biber]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
As first example citation here is \cite{Chomsky1957}.
Here is another example citation \cite{Labov1972}
\printbibliography
\end{document}
这是 Bib 文件
\begin{filecontents}{\jobname.bib}
@book{Labov1972,
Address = {Philadelphia},
Author = {William Labov},
Publisher = {University of Pennsylvania Press},
Title = {Sociolinguistic Patterns},
Year = {1972}}
@book{Chomsky1957,
Address = {The Hague},
Author = {Noam Chomsky},
Publisher = {Mouton},
Title = {Syntactic Structures},
Year = {1957}}
\end{filecontents}
当我编译 PDF 时,我将收到格式化的引文
是否有任何聪明的方法可以在 Latex 文件中将引文键“\cite{Chomsky1957}”替换为可以在 PDF 中找到的格式化参考文献(Chomsky, Noam, 1957,句法结构. 海牙穆顿。)
目的是得到一个已经包含格式化参考资料的乳胶文件
答案1
我没有biblatex
解决方案,因为引用创建参考文献的文本文件我们看到
由于参考书目文本是通过 \printbibliography 打印的,因此没有简单的方法可以获取它
因此,此解决方案重点关注bibtex
上述链接中的部分,使用plain-plain.bst
来自https://gist.github.com/moewew/50795d6f171269e949d71d8c4149468e。
myfile.tex
(你的 mwe 略有修改)
我正在使用你的文件的以下修改版本,它确实不是使用biblatex
。
% arara: pdflatex
% arara: bibtex
% arara: pdflatex
% arara: pdflatex
\documentclass[a4paper,11pt]{article}
\begin{document}
As first example citation here is \cite{Chomsky1957}.
Here is another example citation \cite{Labov1972}
\bibliographystyle{plain-plain}
\bibliography{\jobname.bib}
\end{document}
plain-plain.bst
(略有修改的版本)
我正在使用plain-plain.bst
(上面的链接)并进行了以下修改:
...
FUNCTION {output.bibitem}
{ newline$
""
newline$
"bib-key-begin---" write$
cite$ write$
"---bib-key-end" write$
newline$
before.all 'output.state :=
}
...
我把这个文件放进去~/texmf/bibtex/bst/plain-plain.bst
并运行texhash ~/texmf
这意味着我运行 mwe,然后我收到
myfile.bbl
bib-key-begin---Chomsky1957---bib-key-end
Noam Chomsky. Syntactic Structures. Mouton, The Hague, 1957.
bib-key-begin---Labov1972---bib-key-end
William Labov. Sociolinguistic Patterns. University of Pennsylvania Press,
Philadelphia, 1972.
这是书目的纯文本版本。从这里,我们需要将其读入文件并用适当的值.tex
替换。\cite{<key>}
您可以为此使用任何类型的文本处理;我将使用latexindent.pl
(免责声明,我是作者)和以下文件:
latexindent.yaml
replacements:
-
when: after
substitution: |-
s^\A(.*)\Z^
my $body = $1;
# read in .bbl file
my $bblFile = ${$self}{fileName};
$bblFile =~ s/\.tex/.bbl/s;
my $bblBody = q();
my $openFilePossible = 1;
open( BBLFILE, $bblFile ) or ( $openFilePossible = 0 );
if ( $openFilePossible == 1 ) {
$bblBody = $bblBody.$_ while (<BBLFILE>);
close(BBLFILE);
}
# split the bbl file at bib-key-begin
my @bibentries = split(/bib-key-begin---/,$bblBody);
# loop through the bibliography items
my $index = 0;
foreach (@bibentries){
next if ($_ !~ m/---bib-key-end/s);
$_ =~ s/(.*?)---bib-key-end//s;
my $bibKey = $1;
my $bibValue = $_;
$bibValue =~ s/\R//sg;
# make the substitution in the .tex file
# \cite{<key>} with <value>
$body =~ s/\\cite\{$bibKey\}/$bibValue/sg;
};
$body;^sgxe
现在运行
latexindent.pl -rr -l myfile.tex
最终输出为
myfile.tex(最终输出)
% arara: pdflatex
% arara: bibtex
% arara: pdflatex
% arara: pdflatex
\documentclass[a4paper,11pt]{article}
\begin{document}
As first example citation here is Noam Chomsky. Syntactic Structures. Mouton, The Hague, 1957..
Here is another example citation William Labov. Sociolinguistic Patterns. University of Pennsylvania Press, Philadelphia, 1972.
\bibliographystyle{plain-plain}
\bibliography{\jobname.bib}
\end{document}
最后评论
如果您需要myfile.bbl
包含粗体/斜体,那么您必须调整plain-plain.bst
。