在编写 bookdown::pdf_document2 时,在 biblio-style 中指定 .bst 文件不起作用

Specifing a `.bst` file in `biblio-style` does not work when knitting `bookdown::pdf_document2`

我想在使用 bookdown::pdf_document2 选项编写 .Rmd 文件时自定义引用样式,并在其 YAML 部分指定 biblio-style。 我看到使用 .csl 文件而不是 .bst 已经解决了 bookdown 中关于格式化引文部分的一些以前的问题 (比如 or )。 但是,就我而言,我必须在 .Rmd 的 YAML 的 biblio-style 行中指定要使用哪个 .bst 文件,因为没有 .csl 文件满足我的引用风格...

我正在尝试使用 jecon-unicode.bst 生成我的引文部分(由于文件名中连字符的错误,我在我的工作目录中将文件名更改为 jeconunicode.bst)。通过这个文件,我可以引用APA风格的英文发表的文件,同时,我也可以引用日本一些学术团体推荐的风格用日文写的文件。我打算制作如下所示的引文部分:

理想的结果

文内引用

Suzuki and Tanaka (2032)

鈴木・田中 (2021)

如您所见,在用日语编写的文档中,“・”在文内引用中分隔多个作者姓名。

参考部分

Suzuki, Ichiro, and Taro Tanaka (2032) “Our First Investigation: This Is Not the First, but This Should Be the Last.” Journal of Something Vol.23, No. 5, pp. 19–176.

鈴木一郎・田中太郎 (2021) 「われらの発見について:変貌を遂げつつある何とかの将来に関する過去・現在・未来」, 『何十華論考』, 第42巻, 第5号, 128–82頁.

在参考部分,jeconunicode.bst will also treat Japanese and English document differently, without creating different reference sections per language (i.e. the reference chapter I want to create is different from this)。例如,在同一个参考书目部分,「」『』用于日文文献名,而" "和斜体用于修饰英文文献名。

为了激活jeconunicode.bst,我写了Test.Rmd,在里面插入了myref.bib

Test.Rmd

---
title: "Title"
author: "Name"
date: "`r format(Sys.time(), '%Y年 %B %d日')`"
output:
  bookdown::pdf_document2:
    latex_engine: lualatex
    keep_tex: yes
    toc: TRUE
    toc_depth: 2
    number_sections: TRUE
    fig_caption: TRUE
    dev: cairo_pdf
    extra_dependencies: subfig
    citation_package: natbib
link-citations: yes    
always_allow_html: yes
documentclass: ltjsarticle
header-includes:
   - \RequirePackage{luatexja}
   - \usepackage{graphicx}
   - \usepackage{float}
   - \DeclareGraphicsExtensions{.pdf,.PNG}
   # You can unset Japanese font specification
   # - \usepackage{luatexja-fontspec}
   # - \setmainjfont{YuMincho}[UprightFont=YuMincho-Regular,BoldFont=YuMincho-Demibold]
   # - \setmainfont{TeX Gyre Termes}
   # - \setsansjfont{YuGothic-Medium}[BoldFont=YuGothic-Bold]
   # - \setsansfont{TeX Gyre Heros}
   - \setlength\parskip{0mm}
   - \setlength\parindent{1\Cwd}
   - \usepackage[japanese]{babel}
   - \captionsjapanese
   - \newdimen\bibindent
   - \setlength\bibindent{3\Cwd}
bibliography: myref.bib
biblio-style: jconunicode.bst
editor_options:
  chunk_output_type: console
---

# 何とかの考察に関する歴史

@ST-jp は、「なんとかとは何とかだ!」[@ST-jp]と述べた。
しかし、@ST-en では一転して、
「Something should be more significant than something!!」[@ST-en]と
主張している。



# 参考文献 {-}

\leftskip=3\Cwd

\setlength\parindent{-3\Cwd}

<div id="refs"></div>

\leftskip=0pt

\setlength\parindent{1\Cwd}

myref.bib

为了让jeconunicode.bst识别出哪篇文章是用日文写的,需要加上language = {Ja}.

@article{ST-jp,
title = {われらの発見について:変貌を遂げつつある何とかの将来に関する過去・現在・未来},
journal = {何十華論考},
volume = 42,
number = 5,
pages = {128 -- 182},
year = {2021},
author = {鈴木, 一郎 and 田中, 太郎},
language = {ja}
}

@article{ST-en,
title = {Our first investigation: this is not the first, but this should be the last},
journal = {Journal of Something},
volume = 23,
number = 5,
pages = {19 -- 176},
year = 2032,
author = {Suzuki, Ichiro and Tanaka, Taro}
}

然而,目前我只得到了不理想的结果。 biblio-style 选项中指定的 jeconunicode.bst 对输出没有任何影响,并且使用默认引用样式,尽管我输入了 .Rmd.bst.bib 文件在同一目录中。

当前不需要的结果

文内引用

Suzuki and Tanaka (2032)

鈴木 and 田中 (2021)

参考部分

Suzuki, Ichiro, and Taro Tanaka. 2032. “Our First Investigation: This Is Not the First, but This Should Be the Last.” Journal of Something 23 (5): 19–176.

鈴木, 一郎, and 田中太郎 . 2021. “われらの発見について:変貌を遂げつつある何とかの将来に関する過去・現在・未来.” 何十華論考 42 (5): 128–82.

有没有什么好的方法可以像我上面指出的那样和谐地引用日语和英语(或任何带有拉丁字母的语言)?

我的会话信息

我在 RStudio 中使用 bookdown,如下所示,使用 TeXLive 2018,在 Windows 10:

>devtools::session_info(('bookdown'))
Session info ---------------------------------------------------------------------------------------
 setting  value                       
 version  R version 3.4.3 (2017-11-30)
 system   x86_64, mingw32             
 ui       RStudio (1.1.453)           
 language (EN)                        
 collate  Japanese_Japan.932          
 tz       Asia/Tokyo                  
 date     2018-08-30                  

Packages -------------------------------------------------------------------------------------------
 package   * version date       source        
 backports   1.1.2   2017-12-13 CRAN (R 3.4.3)
 base64enc   0.1-3   2015-07-28 CRAN (R 3.4.1)
 bookdown    0.7     2018-02-18 CRAN (R 3.4.4)
 digest      0.6.15  2018-01-28 CRAN (R 3.4.3)
 evaluate    0.10.1  2017-06-24 CRAN (R 3.4.3)
 graphics  * 3.4.3   2017-12-06 local         
 grDevices * 3.4.3   2017-12-06 local         
 highr       0.6     2016-05-09 CRAN (R 3.4.3)
 htmltools   0.3.6   2017-04-28 CRAN (R 3.4.3)
 jsonlite    1.5     2017-06-01 CRAN (R 3.4.3)
 knitr       1.20    2018-02-20 CRAN (R 3.4.4)
 magrittr    1.5     2014-11-22 CRAN (R 3.4.3)
 markdown    0.8     2017-04-20 CRAN (R 3.4.3)
 methods   * 3.4.3   2017-12-06 local         
 mime        0.5     2016-07-07 CRAN (R 3.4.1)
 Rcpp        0.12.18 2018-07-23 CRAN (R 3.4.4)
 rmarkdown   1.10    2018-06-11 CRAN (R 3.4.4)
 rprojroot   1.3-2   2018-01-03 CRAN (R 3.4.4)
 stats     * 3.4.3   2017-12-06 local         
 stringi     1.1.6   2017-11-17 CRAN (R 3.4.2)
 stringr     1.2.0   2017-02-18 CRAN (R 3.4.3)
 tinytex     0.6     2018-07-07 CRAN (R 3.4.4)
 tools       3.4.3   2017-12-06 local         
 utils     * 3.4.3   2017-12-06 local         
 xfun        0.3     2018-07-06 CRAN (R 3.4.4)
 yaml        2.1.16  2017-12-12 CRAN (R 3.4.3)

我无法使用以下测试文件重现您的问题:

---
title: "Title"
author: "Name"
date: "`r format(Sys.time(), '%Y年 %B %d日')`"
output:
  bookdown::pdf_document2:
    latex_engine: lualatex
    keep_tex: yes
    toc: TRUE
    toc_depth: 2
    number_sections: TRUE
    fig_caption: TRUE
    dev: cairo_pdf
    extra_dependencies: subfig
    citation_package: natbib
link-citations: yes    
always_allow_html: yes
documentclass: ltjsarticle
header-includes:
   - \RequirePackage{luatexja}
   - \usepackage{graphicx}
   - \usepackage{float}
   - \DeclareGraphicsExtensions{.pdf,.PNG}
   - \usepackage{luatexja-fontspec}
   - \setmainfont{TeX Gyre Termes}
   - \setsansfont{TeX Gyre Heros}
   - \setlength\parskip{0mm}
   - \setlength\parindent{1\Cwd}
   - \usepackage[japanese]{babel}
   - \captionsjapanese
   - \newdimen\bibindent
   - \setlength\bibindent{3\Cwd}
bibliography: myref.bib
biblio-style: jeconunicode
editor_options:
  chunk_output_type: console
---

# 何とかの考察に関する歴史

@ST-jp は、「なんとかとは何とかだ!」[@ST-jp]と述べた。
しかし、@ST-en では一転して、
「Something should be more significant than something!!」[@ST-en]と
主張している。


# 参考文献 {-}

\leftskip=3\Cwd

\setlength\parindent{-3\Cwd}

<div id="refs"></div>

\leftskip=0pt

\setlength\parindent{1\Cwd}

我的 HD 没有产生不需要的输出,而是充满了来自 bibtex 的几 GB 错误消息。其中有:

is.kanji.str$ is an unknown function---line 1643 of file jeconunicode.bst
is.kanji.str$ is an unknown function---line 1644 of file jeconunicode.bst
is.kanji.str$ is an unknown function---line 1645 of file jeconunicode.bst
is.kanji.str$ is an unknown function---line 1646 of file jeconunicode.bst

我认为我应该使用 pbibtex 而不是 bibtex。实际上,使用 pbibtexlualatex 手动处理生成的 texaux 文件效果很好。因为我找不到配置它的方法,所以我只是创建了一个符号 link:

ln -s /usr/bin/pbibtex ~/bin/bibtex

这样调用 bibtex 实际上会调用 pbibtex。 之后文档编译完成,尽管在 RStudio 中多次调用 "Knit" 来解析引用:

对我来说,这看起来像所需的输出。我无法解释为什么您会看到不同的结果。

> devtools::session_info(('bookdown'))
Session info -----------------------------------------------------------------------------------------
 setting  value                       
 version  R version 3.5.1 (2018-07-02)
 system   x86_64, linux-gnu           
 ui       RStudio (1.2.830)           
 language (EN)                        
 collate  de_DE.UTF-8                 
 tz       Europe/Berlin               
 date     2018-08-31                  

Packages ---------------------------------------------------------------------------------------------
 package   * version date       source                         
 backports   1.1.2   2017-12-13 CRAN (R 3.5.0)                 
 base64enc   0.1-3   2015-07-28 CRAN (R 3.5.0)                 
 bookdown    0.7     2018-02-18 CRAN (R 3.5.0)                 
 digest      0.6.16  2018-08-22 CRAN (R 3.5.1)                 
 evaluate    0.11    2018-07-17 CRAN (R 3.5.1)                 
 glue        1.3.0   2018-08-24 Github (tidyverse/glue@4e74901)
 graphics  * 3.5.1   2018-07-03 local                          
 grDevices * 3.5.1   2018-07-03 local                          
 highr       0.7     2018-06-09 CRAN (R 3.5.0)                 
 htmltools   0.3.6   2017-04-28 CRAN (R 3.5.0)                 
 jsonlite    1.5     2017-06-01 CRAN (R 3.5.0)                 
 knitr       1.20    2018-02-20 CRAN (R 3.5.0)                 
 magrittr    1.5     2014-11-22 CRAN (R 3.5.0)                 
 markdown    0.8     2017-04-20 CRAN (R 3.5.0)                 
 methods   * 3.5.1   2018-07-03 local                          
 mime        0.5     2016-07-07 CRAN (R 3.5.0)                 
 Rcpp        0.12.18 2018-07-23 CRAN (R 3.5.1)                 
 rmarkdown   1.10    2018-06-11 CRAN (R 3.5.0)                 
 rprojroot   1.3-2   2018-01-03 CRAN (R 3.5.0)                 
 stats     * 3.5.1   2018-07-03 local                          
 stringi     1.2.4   2018-07-20 CRAN (R 3.5.1)                 
 stringr     1.3.1   2018-05-10 CRAN (R 3.5.0)                 
 tinytex     0.8     2018-08-30 CRAN (R 3.5.1)                 
 tools       3.5.1   2018-07-03 local                          
 utils     * 3.5.1   2018-07-03 local                          
 xfun        0.3     2018-07-06 CRAN (R 3.5.1)                 
 yaml        2.2.0   2018-07-25 CRAN (R 3.5.1)