データ解析からQuarto導入までの続きです。
論文に関する情報、メタデータを準備していきます。
解析結果を埋め込むために、データの読み込みも行っていきます。
Step 3. メタデータの記入
以降は、ジャーナルテンプレートをダウンロードしたときに自動で生成された、paper.qmd
を書き換える形で論文執筆していきます。
paper.qmd
の冒頭を見ると、1行目と54行目に、---
と書いてあります。
---
から ---
までの行には、メタデータと呼ばれる情報を、YAML形式で記入していきます。
不要な情報のある行は削除してしまって大丈夫です。
わかりにくい点だけご紹介しましょう。
author: affiliations: id
author:
- name: Alice Anonymous
affiliations:
- id: some-tech
の部分は、所属のコードです。
論文の著者欄に、
Gonbei Nanashinoa, b
a: Nantoka University
b: Doutara Research Institute
みたいに書かれてますよね。
この a とか b とかです。
例だと some-tech
となっていますが、登場順に a
とか b
とかにするのが一般的かと思います。
attributes: corresponding
author:
- name: Alice Anonymous
attributes:
corresponding: true
のように、corresponding: true
となっていると、その筆者が corresponding author として示されます。
たとえば elsevier テンプレートだと、
Gonbei Nanashinoa, b, *
* Corresponding Author
と表示されます。
format: elsevier-pdf: keep-tex
format:
elsevier-pdf:
keep-tex: true
の箇所は、keep-tex: true
のままにしておきましょう。
Quarto は、.qmd ファイルを .pdf に変換するにあたって、まず .tex ファイルを生成します。
TeX のファイルですね。
.tex ファイルを介して .pdf に変換するわけです。
この中間ファイルである .tex を残しておくかどうかがこのオプションです。
.tex ファイルは投稿する際に用いるので、true にしておきましょう。
format: elsevier-pdf: journal
format:
elsevier-pdf:
keep-tex: true
journal:
name: Journal Name
formatting: preprint
# model: 3p # Don't set a model with preprint
cite-style: authoryear
name には、投稿先のジャーナル名を入力してください。
formatting 以下については、テンプレートの詳細をご確認ください。
一部、フィールドの追加が必要です。
keep-tex
の 上あたりに、echo: false
と wrap: preserve
を加えてください。
elsevier-pdf:
echo: false # ←追加
wrap: preserve # ←追加
keep-tex: true
といった形です。
Step 4. 参考文献・略語リストの準備
略語リストを作成する
解析時の変数名などに使った略語と、論文に掲載する正式語の対応表を作成しましょう。
以下のような .ini ファイルで作成します。
[quest]
external = External
internal = Internal
neuro = Neuroticism
extra = Extraversion
open = Openness
agree = Agreeableness
consc = Conscientiousness
[stat]
mean = \textit{M}
std = \textit{SD}
r = \textit{r}
p.unc = $p_{\mathrm{unc.}}$
p.corr = \textit{p}\textsubscript{Bonf.}
これを、paper.qmd
と同じ位置に置きます。
[quest]
や [stat]
といったセクション分けは、ご自身の使いやすいよう適当に設定してください。
\textit{}
で囲むことで、イタリックになります。
\textsubscript{}
なら下付き文字です。
$$
で囲むことによって、数式を記述することもできます。
実際には、論文を書きながら項目を追加していく形になるでしょう。
参考文献リストを作成する
Quarto が生成した bibliography.bib を編集して、自身の参考文献リストを作成します。
.bib ファイルの作り方については別の記事に譲ります。
なんらかの論文管理ソフトから生成するのがよいかと思います。
Step 5. データの読み込み
Step 0 にて、.ini, .csv, .png ファイルとして用意した結果を読み込ませましょう。
読み込みをするための .R ファイルを作成します。
.R ファイルではなく、.py ファイルなど、Quarto で実行可能なファイルならなんでもOKです。
ただし、後述の理由から R をオススメします。
ややこしいコードは書かないので、私のように普段 R を使わない人でも大丈夫です。
in-render.R
というファイルを、paper.qmd
と同じ位置に作成します。
project
├─ (解析に必要なファイルたち)
├── result
└── publish
└── paper
├── (略)
├── paper.qmd
├── in-render.R ←新規作成
└── tools
in-render.R
には、以下のようなコードを書きます。
source('tools/helper.R')
# --- Settings ---
nr <- NumRenderer(
sdgt_general = 1,
sdgt_not_greater_than_one = 2,
sdgt_percent = 2,
sdgt_pval = 3,
min_pval = 0.001,
abbr_ngto_head = TRUE
)
dir_home <- "../../"
dir_result <- file.path(dir_home, "result")
path_abbr_ini <- file.path("abbr.ini")
path_method <- file.path(dir_result, "method.ini")
path_table_descriptive <- file.path(dir_result, "table_descriptive.csv")
path_table_corrs <- file.path(dir_result, "table_corrs.csv")
path_fig_scatter <- file.path(dir_result, "fig_scatter.png")
embeded_fig_exts = '.png'
# --- ------- ---
abbr <- flatten_list(read.ini(path_abbr_ini))
ready_to_embed_fig(dir_result, embeded_fig_exts)
# Method
method <- read.ini(file = path_method)
n_subjects <- method$demographic$n_subjects
python_ver <- method$misc$python_ver
pingouin_ver <- method$misc$pingouin_ver
# Table
desc <- read.csv(path_table_descriptive, row.names = 2)
corr <- read.csv(path_table_corrs, row.names = 1)
set_table_appearance <- function(table) {
return(
table |>
kableExtra::kable(row.names = TRUE,
format = "latex",
escape = FALSE,
booktabs = TRUE) |>
kableExtra::kable_styling(full_width = TRUE)
)
}
上から順に見ていきましょう。
ツールを読み込む
私が書いたツールを読み込むために、
source('tools/helper.R')
から始めています。
表示桁数を設定する
# --- Settings ---
nr <- NumRenderer(
sdgt_general = 1,
sdgt_not_greater_than_one = 2,
sdgt_percent = 2,
sdgt_pval = 3,
min_pval = 0.001,
abbr_ngto_head = TRUE
)
の部分で、論文に数値を記載する際の小数点以下桁数を設定しています。
NumRenderer()
は、tools/helper.R
にて私が作った関数です。
数値の種類ごとに、表示する小数点以下桁数を設定します。
- sdgt_general: 以下に示すパターン以外における数値
- sdgt_not_greater_than_one: 比率や相関係数など、絶対値が1を超え得ない数値(p 値除く)
- sdgt_percent: パーセンテージ
- sdgt_pval: p 値
この関数を使うと、論文をPDFへ出力したとき、設定した通りの小数点以下桁数に丸めてくれます。
さらに、abbr_ngto_head = TRUE
1 とすると、比率・相関係数または p 値における、頭の 0 を省略してくれます。
例:p = 0.051 → p = .051
また、min_pval
に設定した値よりも小さい p 値を記載すると、
p < .001
といった表記に変換してくれます。
NumRenderer()
の詳細な使い方は後ほどご説明します。
ファイルパスを設定する
dir_home <- "../../"
dir_result <- file.path(dir_home, "result")
path_abbr_ini <- file.path("abbr.ini")
path_method <- file.path(dir_result, "method.ini")
path_table_descriptive <- file.path(dir_result, "table_descriptive.csv")
path_table_corrs <- file.path(dir_result, "table_corrs.csv")
path_fig_scatter <- file.path(dir_result, "fig_scatter.png")
embeded_fig_exts = '.png'
で、読み込むファイルのあるパス名を設定します。
また、論文に埋め込む画像の拡張子を embeded_fig_exts
に指定します。
略語リストを読み込む
abbr <- flatten_list(read.ini(path_abbr_ini))
path_abbr_ini
に指定した、abbr.ini を読み込みます。
flatten_list()
という helper.R にある関数を使って、セクション分けをつぶしてます。
Figure をコピーする
ready_to_embed_fig(dir_result, embeded_fig_exts)
によって、論文に埋め込む .png ファイルを、result/
から publish/paper/tex-source-files/
へコピーしています。
tex-source-files/
というディレクトリはこの関数により自動で生成されます。
result/
にある .png ファイルを直接埋め込んでも問題はありません。
しかし、PDF 生成に必要なファイルを一つのディレクトリ(tex-source-files/
)にまとめておくことで、のちの作業がやりやすくなります。
.ini ファイルを読み込む
# Method
method <- read.ini(file = path_method)
n_subjects <- method$demographic$n_subjects
python_ver <- method$misc$python_ver
pingouin_ver <- method$misc$pingouin_ver
read.ini()
を使って、.ini ファイルに保存した数値を読み込みます。
続けて、method
の中身を各変数に格納しています。
paper.qmd 内にて method$demographic$n_subjects
と打ち込んでもOKです。
しかし表記が長くて読みづらくなるので、こちらで n_subject
といった変数に格納しています。
テーブルを読み込む
desc <- read.csv(path_table_descriptive, row.names = 2)
corr <- read.csv(path_table_corrs, row.names = 1)
row.names
引数に、行の名前に対応する列の番号を指定しています。
table-descriptive.csv のようなマルチインデックスの場合、低次なインデックスの方を指定します。
テーブル埋め込みを準備する
set_table_appearance <- function(table) {
return(
table |>
kableExtra::kable(row.names = TRUE,
format = "latex",
escape = FALSE,
booktabs = TRUE) |>
kableExtra::kable_styling(full_width = TRUE)
)
}
manuscript.qmd 中で kableExtra()
を使って表を整えます。
しかし毎回同じ引数を入力したりも面倒なので、関数にしておきました。
関数 set_table_appearance()
に 表 table
を与えると、
kableExtra
パッケージによっていい感じに見た目が整えられます。
paper.qmd に in-render.R を反映させる
paper.qmd
に戻りましょう。
メタデータを書いた直後に、以下のように書いてやります。
---
(略)
cite-style: authoryear
---
```{r}
source('in-render.R')
```
これで、in-render.R
に書いた内容が paper.qmd
に反映されます。
今回はいったんここまでです。
次回は、本文執筆からPDF出力までです。
-
ngto
は Not Greater Than One の略です。私が勝手に略しました。 ↩