とある文章を作る際、参考文献の表示方法を「[1]:著者名:雑誌名(論文名), 出版社(発行元), ページ, 発行年.」のような形にしたいと思い、その形にするにはいろいろ調べてみるとbstをいじるもしくはbiblatexを使えばいいということは分かりました。
しかし、生成AIの力等も借りましたが自分ではその方法が分からず、ここでお尋ねした次第です。ご存じの方がおられましたらご教授いただけますと幸いです。 よろしくお願いいたします。
P.S.
添付ファイルのように参考文献の見出しを修正しているのでそれを受け継ぐのような形にしていただけますと幸いです。
Table of Contents
改修方針
FUNCTION {article} を変更しました
article や book など様々な形態の title のような各要素の表現方法 を変更するならば FUNCTION {format.title} のような関数をいじれば良いのですが、 要件を見ると、article でもその要素の並べ方が、junsrt.bst と異なるので FUNCTION {article} の書き換えを行うようにしました。
ですので book などで、同様のご要望があれば、類似の書き換えが必要と思われます。
検証は、 junsrt.bst を myjunsrt.bst として複製したものを、 カレントに配置して検証しています。
以下は、myjunsrt.bst の article の [1]:著者名:雑誌名(論文名), までの変更です。
まだまだ修正の余地はありますが、暫定版としてレポートします。
@@ -786,18 +786,34 @@
}
FUNCTION {article}
{ output.bibitem
+ ":" *
format.authors "author" output.check
- new.block
- format.title "title" output.check
- new.block
+ ":" *
+
crossref missing$
- { journal emphasize "journal" output.check
+ {
+ % journal emphasize "journal" output.check
+ % 上記を使うと journal の直前に「.」生成されてしまう
+
+ journal emphasize *
+ % format.title "title" output.check
+ % 上記を使うと title の直前に「,」が生成されてしまう
+ "(" *
+ title *
+ ")" *
format.vol.num.pages output
format.date "year" output.check
}
- { format.article.crossref output.nonnull
+ {
+ % format.title "title" output.check
+ "(" *
+ title *
+ ")" *
+ new.block
+
+ format.article.crossref output.nonnull
format.pages output
}
if$
出版社(発行元) 未対応について
ご要望されている 出版社(発行元) に関しては、どちらも publisher に なるので、後者の発行元は拡大解釈して techreport で利用されている institution で代用しても良いかと思いました。
記入がなければ表示しないと対応すれば良いのですが、要望された出力内容を 見ると、 参考文献情報として volume や number という必要なものが欠けて しまうので、ご意向を確かめたく publisher などを利用する修正を保留とし ました。
和田 様
ご返信いただきありがとうございます。
お詫びと訂正
質問にて、[1]:著者名:雑誌名(論文名), 出版社(発行元), ページ, 発行年. としておりましたが正しくは [1] 著者名:雑誌名(論文名), 出版社(発行元), ページ, 発行年. であり、[1]の後の:は不要でした。文章の推敲不足で申し訳ございません。
これについて、私なりに分析したところ、和田さんにご提供いただいたmyjunrst.bstの789行目を削除すればいいと分かりました。もし、これに問題があればご指摘いただけますと幸いです。
ご質問の事項について
ご質問の 出版社(発行元)の体裁についてですが私が体裁として挙げたものは実は私が考えたものではなく指定されたものでして[1] 著者名:雑誌名(論文名), 出版社(発行元), ページ, 発行年. の()の内の内容については論文を引用した場合を想定し私が加えたものです。
もともとは Word での作成が想定された原稿のため、TeX 用のフォーマットがなく、自分で整えようとしたのが今回の対応のきっかけでした。 現在、論文を引用する際の正式な体裁について確認中ですので、確認が取れ次第、あらためてご連絡させていただきます。
和田 様
論文を引用する際の正式な体裁について、確認を行ったところ著者の後の:は不要ということが分かりました。どうやら、フォーマットのwordファイルは古い情報の物だったようです。和田様のお手を煩わせてしまい申し訳ございません。
さて、論文を含む文献を引用する際の正式な体裁は以下のものでした。作成している文章の性質上、引用する可能性が高いのは以下の3点と思われます。これに対応できるような改造方法をご教授いただけますと幸いです。
よろしくお願いいたします。
書籍の場合は
[1] 著者, 書名[, シリーズ名], 出版社[, 出版地], 発行年[, ページ].
論文の場合は
[1] 筆者, 表題, 雑誌名{, 巻号}, 発行年月{, ページ}.
Webページの場合は
[1] {著者, }表題, {作成日, }閲覧日付, URL.
ただし、*[ ] 内は必要ならば書く。{ } 内は分かれば書く。
なんとかご依頼の形に近い形のものができました。 添付の 251202-part2.pdf などを参考にしてください。
とはいえ、スタック志向の言語は苦手なので、不具合があるかと思います。
仕様内容が不明のため、保留にしたもの
- 論文 の発行年月 ... 書式不明なのため
- Webページ の 作成日、閲覧日付は yyyy-mm-dd でデータ作成しています
添付ファイル
| ファイル名 | 記事 |
|---|---|
| 251202-part2.bib | 検証用 .bib |
| 251202-part2.pdf | 成果物 |
| 251202-part2.tex | 検証用 .tex |
| myjunsrt.bst | 改修対象 .bst |
| myjunsrt.bst.diff | junsrt.bst との差分 |
和田 様
ご返信いただきありがとうございます。
お詫び
前回、論文を含む文献を引用する際の正式な体裁を前回、お示ししていましたが体裁中の[]や{}は説明のためにつけたもので実際の文章の中では不要となるものでした。私の説明不足で申し訳ございません。参考に書籍を引用し[]内の内容が必要であり、{}のことが分かった場合は [1] LaTeX太郎, すごくよくわかるLaTeX, すごくよくわかるシリーズ, 〇△社, 日本, 2022, p.200-203. となります。こちらについては可能でしたらご対応いただけますと幸いです。
ご質問への回答
1.「論文 の発行年月 ... 書式不明なのため」へのご回答
論文の発行年月につきましてはyyyy-mmの書式(-mmの部分がない場合はyyyyのみ)でお願いいたします。
2.「Webページ の 作成日、閲覧日付は yyyy-mm-dd でデータ作成しています」へのご回答
作成日の形式はyyyy-mm-dd 、閲覧日付の形式は閲覧日:yyyy-mm-dd の形式でお願いいたします。
伊藤さんの方で対応できると考えていますので、以下を参考にしてまず試してみてください。
「[」「]」「{」「}」については、文字列を埋め込んであるだけですので、簡単に除去できます。
- ただし「"閉じカッコ" *」と
*込みで除去する点に注意してください
- ただし「"閉じカッコ" *」と
一般的に参考文献のページの表記は、単一ページであれば「 p.123」となり複数ページの場合は 「pp.200-203」になりますが ...
article の発行年月の書式への対応は、 format.date "year" output.check.comma で処理しているので、以下のようにすれば対応できます。
year * month empty$ {} { "--" * month * } if$webページの日付は、 .bib ファイルを見ていただければわかると思いますが、データとして yyyy-mm-dd になっていますので問題はないと思います。
和田 様
ご返信いただきありがとうございます。
「[」「]」「{」「}」については、文字列を埋め込んであるだけですので、簡単に除去できます。
- ただし「"閉じカッコ" 」と 込みで除去する点に注意してください
⇒和田さんにご教授いただいた差分ファイルなどを参考に削除できました。ありがとうございます。
- 一般的に参考文献のページの表記は、単一ページであれば「 p.123」となり複数ページの場合は 「pp.200-203」になりますが ...
⇒和田さんのおっしゃる通り、私の認識不足で和田さんが書かれている体裁で問題ございません。
article の発行年月の書式への対応は、 format.date "year" output.check.comma で処理しているので、以下のようにすれば対応できます。
year * month empty$ {} { "--" * month * } if$
⇒format.date "year" output.check.commaを削除しyyyy-mmの前に,が付くようにしたかったので以下のコードを追加しました。
year empty$
{}
{
"," *
year *
month empty$
{}
{ "--" * month * }
if$
}
if$
- webページの日付は、 .bib ファイルを見ていただければわかると思いますが、データとして yyyy-mm-dd になっていますので問題はないと思います。
⇒ご教授いただきありがとうございます。自動で閲覧日:yyyy-mm-ddと表示されるようにurldate * ", " * url *から"閲覧日:" * urldate * ", " * url *とbstを書き換えました。
-「article の発行年月の書式への対応は、 format.date "year" output.check.comma で処理しているので、。。。」について補足
もし他のところでも 年月 を扱う可能性を考慮するなら
format.date という関数を以下のように変更する提案をした方が
よかったのではと反省しております。
diff --git a/myjunsrt.bst b/myjunsrt.bst
index 1ff15f6..4206d52 100644
--- a/myjunsrt.bst
+++ b/myjunsrt.bst
@@ -406,7 +406,7 @@ FUNCTION {format.date}
}
{ month empty$
'year
- { month " " * year * }
+ { year "--" * month * }
if$
}
if$