【问题标题】:Cross-referencing in rticles文章中的交叉引用
【发布时间】:2017-02-19 18:28:32
【问题描述】:

这本书为方程式、图形、表格和部分提供了很好的交叉引用选项: https://bookdown.org/yihui/bookdown/cross-references.html

但是,当我设置为输出 'rticles::elsevier_article' 时,它们似乎不起作用。

文章中的交叉引用有哪些可用选项?

【问题讨论】:

    标签: r knitr r-markdown bookdown


    【解决方案1】:

    我没试过,但是这里有一个可能的解决方案:https://bookdown.org/yihui/bookdown/a-single-document.html

    特别是,在您的 YAML 元数据中指定:

    output:
      bookdown::pdf_book:
        base_format: rticles::elsevier_article
    

    【讨论】:

    • 感谢您的回复。我知道这个解决方案。但是我想知道文章是否不提供自己的参考系统。关于您的回复,我对 pdf_book 的 base_format 有疑问。如果我在输出中添加行 'citation_package: natbib',则参考书目根本不会编译。但我想这是针对不同的问题。您确定没有“本机”引用选项吗?
    • 你可以试试captioner package。请参阅vignette 或这个简短的tutorial。或者也可以看看这个相关的 SO 问题:stackoverflow.com/questions/38861041/…
    【解决方案2】:

    由于我是使用R Markdown 的新手,因此我决定发布此答案,因为有些人可能会犯同样的错误。我自己尝试过 F Rodriguez-Sanchez 的答案,但没有奏效。我收到以下消息:

    ! LaTeX Error: File `elsarticle.cls' not found.
    
    ! Emergency stop.
    <read *> 
    
    Erro: Failed to compile report.tex. See report.log for more info.
    

    它不起作用,因为我尝试添加建议的答案,选择New Markdown,然后选择Document,因此犯了一个新手错误。

    然后我尝试打开一个New R Markdown,从rticles 包中选择From TemplateElsevier Journal Article。在那之后,我使用了 F Rodriguez-Sanchez 建议的答案,并且成功了!

    最终的 yaml 标头是:

    ---
    title: Short Paper
    author:
      - name: Alice Anonymous
        email: alice@example.com
        affiliation: Some Institute of Technology
        footnote: Corresponding Author
      - name: Bob Security
        email: bob@example.com
        affiliation: Another University
    address:
      - code: Some Institute of Technology
        address: Department, Street, City, State, Zip
      - code: Another University
        address: Department, Street, City, State, Zip
    abstract: |
      This is the abstract.
    
      It consists of two paragraphs.
    
    journal: "An awesome journal"
    date: "`r Sys.Date()`"
    bibliography: mybibfile.bib
    output:
      bookdown::pdf_book:
        base_format: rticles::elsevier_article
    ---
    

    【讨论】:

    • 我也有同样的问题。您能否添加有关如何交叉引用该图的答案和示例? \@ref(my-chunk-name) 的建议不起作用。谢谢
    • @maycca ` c.f.图。\@ref(fig:my-chunk-name)` 应该可以带你到那里。
    • 谢谢@Ray,我试过了,但还是不行。作为RMarkdown的输出,我按照建议使用output: bookdown::pdf_book: base_format: rticles::elsevier_article。也许还有另一种解决方案?再次感谢
    • 不用担心@maycca。我在下面粘贴更长的答案。希望这会有所帮助。
    【解决方案3】:

    @maycca 请确保通过从模板中选择新文件并选择 Elsevier Journal 版本/模板来打开 RMarkdown。模板将在文章安装后可用。

    这将设置文章“基础设施”(特别是相应的 cls 和其他文件)。这还包括一个 mybibfile.bib 示例(因此,我不需要将 biblio 注释掉)。 如果您选择将其保存在子文件夹中,请确保您的 Rmd 文件保存在该子文件夹中。

    如上/下所示,更改 YAML 的 output: 标记以包含 bookdown 和基本格式 rticles::elsevier_article 指针。
    仔细检查冒号和制表符的使用。

    根据上面的示例,您可以使用 bookdown 交叉引用,如下所示。我用过
    (i) 在代码块之前使用(ref:awesomeplotcaption) 定义的外部(bookdown)图形标题。这对于保持块选项简短(呃)很有用。
    (ii) 对图\@ref(fig:awesomeplot) 的(书本)交叉引用。请注意\@ref(fig:...) 使用块名称来使指针工作。因此,请确保您的块名称带有标准字母、数字和破折号,即没有下划线!

    点击编织按钮会变魔术!

    ---
    title: Short Paper
    author:
      - name: Alice Anonymous
        email: alice@example.com
        affiliation: Some Institute of Technology
        footnote: Corresponding Author
      - name: Bob Security
        email: bob@example.com
        affiliation: Another University
    address:
      - code: Some Institute of Technology
        address: Department, Street, City, State, Zip
      - code: Another University
        address: Department, Street, City, State, Zip
    abstract: |
      This is the abstract.
    
      It consists of two paragraphs.
    
    journal: "An awesome journal"
    date: "`r Sys.Date()`"
    #bibliography: mybibfile.bib
    output:
      bookdown::pdf_book:
        base_format: rticles::elsevier_article
    ---
    
    # First Heading
    
    Some cool introductory text.
    
    And an even more fascinating plot.
    
    (ref:awesomeplotcaption) A simple demo plot
    
    ```{r awesomeplot, fig.cap="(ref:awesomeplotcaption)"}
    x <- -5:5
    y <- x^2
    
    plot(x,y)
    ```
    
    More explanatory text.
    
    Using bookdown cross-referencing, have again a closer look at Fig. \@ref(fig:awesomeplot).
    

    这会导致以下结果:

    附:关注交叉引用并忽略代码块,这可以用echo = FALSE 隐藏。如下图(在本例中,通过 LATEX 放置)。我将其截断以保持图形易于管理:)

    【讨论】:

      猜你喜欢
      • 2020-04-25
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 2017-04-03
      相关资源
      最近更新 更多