web-dev-qa-db-ja.com

ブックダウンで図のキャプション形式を変更する方法

ブックダウン(単一の文書)を使用する場合、図には次のように自動的に番号が付けられます。

図1図のキャプションのテキスト。

化学の慣例では、主要な数字に次のようにラベルを付けます。

図1。図のキャプションのテキスト。

補足情報ドキュメント:

図S1。図のキャプションのテキスト。

また、テキストの図参照では、次のものが必要です。

...図1に示すように、...

したがって、参照テキストは太字にしないでください。

質問

ブックダウン(またはrmarkdown)で図と表のキャプションを次のように作成するにはどうすればよいですか: "図S1。一部のテキスト。"および「表S1。いくつかのテキスト。」 ?

これをMS Word形式にする必要があります。

例/試みられた解決策

これまでのところ、私は_bookdown.ymlドキュメントを次のように変更しようとしました:

language:
  label:
    fig: "**Figure S**"
    tab: "**Table S**"

これは次のようになります:図S 1いくつかのテキスト...と使用時のインライン参照

Figure S\@ref(fig:Xray)

大丈夫です図S1です。

これは最小限の例です:

---
title: Supporting Information
subtitle: "Iron(I) etc"
author: "Some people here"
abstract: "Added the addresses here since there is no abstract in the SI"
output:
  bookdown::Word_document2:
    fig_caption: yes
    toc: yes
    toc_depth: 1
---

## Reaction of etc.
Some text  (Figure S\@ref(fig:Xray)). Some text followed by a figure:

```{r Xray, fig.cap="Single-crystal X-ray structure of some text", echo=FALSE}
plot(cars)
```
Some text etc. followed by a table:

```{r DipUVvis, echo=FALSE, tab.cap="Table caption"}
df<-data.frame(Entry=c('AMM 51$3^a$','AMM 52^*a*^'),
               Precat=c('[FeBr~2~(dpbz)~2~] (4.00)','[FeBr~2~(dpbz)~2~] 
(2.00)'))

kable(head(df), format = "markdown")
```

上記のコードは、図のキャプションで図S 1を生成しますが、図S1。を生成しません(最後にすべて太字で完全に停止していることに注意してください)。

18
AMM

私の知る限り、rmarkdown/bookdownで図や表のキャプションを制御して、希望どおりの操作を行うことはできません。 captionerパッケージを使用すると、キャッチでそれを実現できます。rmarkdown出力で問題なく動作しますが、bookdown出力で後処理を行う必要があります。希望のキャプションスタイルを生成するRmdファイルを次に示します。

---
title: Supporting Information
subtitle: "Iron(I) etc"
author: "Some people here"
abstract: "Added the addresses here since there is no abstract in the SI"
output:
  Word_document:
    fig_caption: yes
---

```{r, include=F}
library(captioner)
tables <- captioner(prefix = "Table S", suffix = ". ", style="b", style_prefix=TRUE, auto_space = FALSE)
figures <- captioner(prefix = "Figure S", suffix = ". ", style="b", style_prefix=TRUE, auto_space = FALSE)

figures("Xray1", "Single-crystal X-ray structure of some text (1)", display=FALSE)
figures("Xray2", "Single-crystal X-ray structure of some text (2)", display=FALSE)
figures("Xray3", "Single-crystal X-ray structure of some text (3)", display=FALSE)
```

## Reaction of etc.
Some text. Some text followed by `r figures("Xray1", display="cite")`, which is the same figure as  `r figures("Xray3", display="cite")` but comes after `r figures("Xray2", display="cite")`.

```{r Xray, fig.cap=figures("Xray1"), echo=FALSE}
plot(cars)
```

```{r Xray2, fig.cap=figures("Xray2"), echo=FALSE}
plot(cars)
```

```{r Xray3, fig.cap=figures("Xray3"), echo=FALSE}
plot(cars)
```

Some text etc. followed by `r tables("tab-DipUVvis", display="cite")`:

```{r DipUVvis, echo=FALSE}
df<-data.frame(Entry=c('AMM 51$3^a$','AMM 52^*a*^'),
               Precat=c('[FeBr~2~(dpbz)~2~] (4.00)','[FeBr~2~(dpbz)~2~] 
(2.00)'))

knitr::kable(head(df), caption=tables("tab-DipUVvis", "Table Caption"))
```

ただし、bookdown :: Word_document2出力を使用するように切り替えると、図のキャプションは「図1:図S1。..」になります。 「図1:」を非表示にする方法が見つからなかったため、出力で後処理を行ってすべての「図?:」を「」に置き換えます。

4
LmW.

bookdownを介して図のキャプションプレフィックスをスタイルする方法はありませんが、カスタムLuaフィルター(pandoc 2.0以降が必要)を適用することでこれを行うことができます。

あなたがから始めていると仮定して

図1図のキャプションのテキスト。

次のフィルターはあなたが望むことをするはずです(追加のフォーマットオプションについては https://pandoc.org/lua-filters.html#inline を参照してください):

function Image (img)
  img.caption[1] = pandoc.Strong(img.caption[1])
  img.caption[3] = pandoc.Strong(img.caption[3])
  img.caption[4] = pandoc.Strong(".  ")
  return img
end

img.caption[2]Figureと数値の間の空白であり、img.caption[4]は数値とキャプションの間の空白であると仮定します)

このフィルターをrmarkdownドキュメントのディレクトリにあるfigure_caption_patch.luaというファイルに配置すると、YAMLの前付けにpandoc引数を追加して適用できます。

output:
  bookdown::Word_document2:
    pandoc_args: ["--lua-filter", "figure_caption_patch.lua"]

これにより、目的のキャプションスタイルが得られます。

図1.図のキャプションのテキスト。

5
crsh

Word(.docx)スタイルを設定するためのこのガイド に従って、イチジクを作成できます。とタブ。キャプションは太字ですが、キャプション行全体を太字にすることもできます...つまり、次のようにRMarkdownを使用して.docxにキャプションを自動的に作成する方法があります。

図S1:一部のテキストの単結晶X線構造(1)

ただし、次のようなものを作成するのは難しいようです。

図S1:一部のテキストの単結晶X線構造(1)

キャプション行全体ではなく、「図/表S1」セクションのみを太字にしたいと思います。それでも、Rmarkdownで.docxファイルをフォーマットすることに興味がある場合は、上記で追加したリンクをチェックして、次の説明を確認できます。

1.ニット the .Rmd file @LmW。最初の.docx出力を取得するために提供されました。

captionerパッケージに問題がある場合は、次のパッケージも使用できます。

---
title: Supporting Information
subtitle: "Iron(I) etc"
author: "Some people here"
abstract: "Added the addresses here since there is no abstract in the SI"
output:
  Word_document:
     fig_caption: yes
---

```{r, include=F}
library(captioner)
#`captioner` package (Ver. 2.2.3) in my envionment returns the following error messages:
#Error in captioner(prefix = "Table S", suffix = ". ", style = "b", style_prefix = TRUE,  : 
#  unused arguments (suffix = ". ", style = "b", style_prefix = TRUE)

#Error in captioner(prefix = "Figure S", suffix = ". ", style = "b", style_prefix =     TRUE,  : 
#  unused arguments (suffix = ". ", style = "b", style_prefix = TRUE)

#tables <- captioner(prefix = "Table S", suffix = ". ", style="b", style_prefix=TRUE, auto_space = FALSE)
#figures <- captioner(prefix = "Figure S", suffix = ". ", style="b", style_prefix=TRUE, auto_space = FALSE)

tables <- captioner(prefix = "Table S",  auto_space = FALSE)
figures <- captioner(prefix = "Figure S", auto_space = FALSE)

figures("Xray1", "Single-crystal X-ray structure of some text (1)", display=FALSE)
figures("Xray2", "Single-crystal X-ray structure of some text (2)", display=FALSE)
figures("Xray3", "Single-crystal X-ray structure of some text (3)", display=FALSE)
```

## Reaction of etc.
Some text. Some text followed by `r figures("Xray1", display="cite")`, which is the same figure as  `r figures("Xray3", display="cite")` but comes after `r figures("Xray2", display="cite")`.

```{r Xray, fig.cap=figures("Xray1"), echo=FALSE}
plot(cars)
```

```{r Xray2, fig.cap=figures("Xray2"), echo=FALSE}
plot(cars)
```

```{r Xray3, fig.cap=figures("Xray3"), echo=FALSE}
plot(cars)
```

Some text etc. followed by `r tables("tab-DipUVvis", display="cite")`:

```{r DipUVvis, echo=FALSE}
df<-data.frame(Entry=c('AMM 51$3^a$','AMM 52^*a*^'),
               Precat=c('[FeBr~2~(dpbz)~2~] (4.00)','[FeBr~2~(dpbz)~2~] 
               (2.00)'))

knitr::kable(head(df), caption=tables("tab-DipUVvis", "Table Caption"))
```

2. Image CaptionおよびTable Captionを太字に設定します。

最初の.docxファイルでは、

  1. 画像のキャプションまたは表のキャプションを選択します。
  2. 太字にします(Ctrl + BまたはCommand + B);
  3. ホームタブのスタイル設定の右下隅をクリックします。またはAlt + Ctrl + Shift + Sを押します。
  4. Image CaptionまたはTable Captionを検索します。
  5. ドロップダウンメニューをクリックし、[選択内容と一致するようにタイトルを更新]をクリックします。

画像と表の両方のキャプションで上記の手順を実行した場合は、.docxファイルをWord-styles-reference-01.docxとして作業ディレクトリに保存してください。

Selecting an image caption to make it bold

3. .Rmdファイルを編み、reference_docx行を追加して、最終的な.docx出力を取得します。

reference_docx: Word-styles-reference-01.docx行の下にWord_document:を追加します。次の例の7行目を参照してください。

---
title: Supporting Information
subtitle: "Iron(I) etc"
author: "Some people here"
abstract: "Added the addresses here since there is no abstract in the SI"
output:
  Word_document:
    reference_docx: Word-styles-reference-01.docx
    fig_caption: yes
---

```{r, include=F}
library(captioner)
#`captioner` package (Ver. 2.2.3) in my envionment returns the following error messages:
#Error in captioner(prefix = "Table S", suffix = ". ", style = "b", style_prefix = TRUE,  : 
#  unused arguments (suffix = ". ", style = "b", style_prefix = TRUE)

#Error in captioner(prefix = "Figure S", suffix = ". ", style = "b", style_prefix =     TRUE,  : 
#  unused arguments (suffix = ". ", style = "b", style_prefix = TRUE)

#tables <- captioner(prefix = "Table S", suffix = ". ", style="b", style_prefix=TRUE, auto_space = FALSE)
#figures <- captioner(prefix = "Figure S", suffix = ". ", style="b", style_prefix=TRUE, auto_space = FALSE)

tables <- captioner(prefix = "Table S",  auto_space = FALSE)
figures <- captioner(prefix = "Figure S", auto_space = FALSE)

figures("Xray1", "Single-crystal X-ray structure of some text (1)", display=FALSE)
figures("Xray2", "Single-crystal X-ray structure of some text (2)", display=FALSE)
figures("Xray3", "Single-crystal X-ray structure of some text (3)", display=FALSE)
```

## Reaction of etc.
Some text. Some text followed by `r figures("Xray1", display="cite")`, which is the same figure as  `r figures("Xray3", display="cite")` but comes after `r figures("Xray2", display="cite")`.

```{r Xray, fig.cap=figures("Xray1"), echo=FALSE}
plot(cars)
```

```{r Xray2, fig.cap=figures("Xray2"), echo=FALSE}
plot(cars)
```

```{r Xray3, fig.cap=figures("Xray3"), echo=FALSE}
plot(cars)
```

Some text etc. followed by `r tables("tab-DipUVvis", display="cite")`:

```{r DipUVvis, echo=FALSE}
df<-data.frame(Entry=c('AMM 51$3^a$','AMM 52^*a*^'),
               Precat=c('[FeBr~2~(dpbz)~2~] (4.00)','[FeBr~2~(dpbz)~2~] 
               (2.00)'))

knitr::kable(head(df), caption=tables("tab-DipUVvis", "Table Caption"))
```
5