.bstを適当に修正して多分 crossref 相互参照

.bstを適当に修正して多分 crossref 相互参照

- 古島 健太 の投稿
返信数: 2
前略失礼します.表題の件は

.bstを適当に修正してある文献項目から他の文献項目を参照した上で
文字列を組み合わせるにはどうすればいいですか?
下記の例でいうと  "  この項目は  文献 crossref    と同じ作家である  "
という文章にしたいのです.
crossref  が効いているのは確認済みですが組合せがうまくいかないのです.


\documentclass{jsarticle}
%使用例 
\begin{document}
      \nocite{*}
      \bibliographystyle{jplain}
      \bibliography{WithoutMath}
\end{document}

.bibファイルは以下
@book{カラマーゾフの兄弟,
        author = {ドストエフスキー}, editor = {小沼文彦訳},
        yomi = {ドストエフスキー},
        title = {カラマーゾフの兄弟},
        publisher = {筑摩書房},
        year = {2010},
        month={9},   
        note={小沼文彦訳},
        journal = {acmsc}
      }
@book{カラマーゾフ亀山郁夫,
        author = {ドストエフスキー}, editor = {亀山郁夫訳},
        yomi = {ドストエフスキー},
        title = {カラマーゾフの兄弟},
        publisher = {光文社},
        year = {2006},
        month={10},
        volume = {}, number = {},
        series = {古典新訳文庫}
      }
古島 健太 への返信

Re: .bstを適当に修正して多分 crossref 相互参照

- 和田 勇 の投稿
  1. WithoutMath.bib をそれなりに直しました

    • 適当な書き方だとどこが影響するかこんがらがるので書籍情報を元に再構成
    • crossref が記述されていなかったので組み込みました
    @book{カラマーゾフの兄弟:小沼文彦,
        author    = { 小沼文彦 },
        title     = { カラマーゾフの兄弟 },
        publisher = { 筑摩書房 },
        year      = { 1963 },
        series    = { },
        yomi      = { コヌマ フミヒコ },
        note      = { ドストエフスキー全集 / 小沼文彦訳 ; 第10巻,第11巻 },
        crossref  = { カラマーゾフの兄弟:亀山郁夫 },
    }
    @book{カラマーゾフの兄弟:亀山郁夫,
        author    = { 亀山郁夫 },
        title     = { カラマーゾフの兄弟 },
        publisher = { 光文社 },
        year      = { 2006 },
        month     = { Sep 07 },
        series    = { 古典新訳文庫 },
        yomi      = { カメヤマ イクオ },
        note      = { ドストエフスキー著 / 亀山郁夫訳 },
        crossref  = { カラマーゾフの兄弟:小沼文彦 },
    }
    

    crossref を使うと不足情報を取り込んでしまうので カラマーゾフの兄弟:小沼文彦series は空っぽにしてあります。

  2. jplain.bstmyplain.bst コピーし .tex もそれに対応させておく

  3. .tex , myplain.bst , .bib から .bbl を生成し crossreff がどのように反映されるか調べると以下のように \cite として反映されている

    \bibitem{カラマーゾフの兄弟:亀山郁夫}
    亀山郁夫.
    \newblock カラマーゾフの兄弟.
    \newblock 古典新訳文庫,
    \cite{カラマーゾフの兄弟:小沼文彦}, Sep 07 2006.
    \newblock ドストエフスキー著 / 亀山郁夫訳.
    
  4. myplain.bst\cite{...} を出力している箇所は3箇所あるが @book で使われるものに所望の文字列を組み込む(修正した差分情報は以下を参考にしてください)

    --- /opt/texlive/2023/texmf-dist/pbibtex/bst/jplain.bst 2023-02-24 05:56:09.000000000 +0900
    +++ myjplain.bst    2023-09-05 10:41:06.000000000 +0900
    @@ -764,7 +764,7 @@
        }
        { format.crossref.editor * }
    if$
    -  " \cite{" * crossref * "}" *
    +  " この項目は 文献 \cite{" * crossref * "} と同じ作家である " *
    }
    FUNCTION {format.incoll.inproc.crossref}
    { editor empty$
    
  5. 修正した myplain.bst.bbl を再生成

    \bibitem{カラマーゾフの兄弟:亀山郁夫}
    亀山郁夫.
    \newblock カラマーゾフの兄弟.
    \newblock 古典新訳文庫,
    この項目は 文献 \cite{カラマーゾフの兄弟:小沼文彦}
    と同じ作家である , Sep 07 2006.
    \newblock ドストエフスキー著 / 亀山郁夫訳.
    
  6. 以上で検証したファイルや生成ファイルを添付します

  7. 雑感ですが note の記述を工夫すればすっきりとした参考文献情報になるのかな と思ってます