Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

参考文献DBとの連携 #1590

Open
kmuto opened this issue Oct 30, 2020 · 12 comments
Open

参考文献DBとの連携 #1590

kmuto opened this issue Oct 30, 2020 · 12 comments

Comments

@kmuto
Copy link
Owner

kmuto commented Oct 30, 2020

https://twitter.com/windowmoon/status/1321853175494668288 からのスレッド

BibtexかBibLatexに対応するか、ZoteroかMendeleyかEndnoteと連携できるようになってくれればいいのだが

Zotero・Mendeley・Endnote・ReadCubeから出力できる形式を読めるようにするか、現在の形式を出力するZotero・Mendeley・Endnote・ReadCubeプラグインを用意すればいいだろうと思います。あと、本文中での体裁を調整するCitation Style Languageに対応すればLaTeXからの移行が可能になると思います。

Zoteroからは、CSL JSONやEndnote XMLで出力できるので、これらに対応すればいいのではないでしょうか。

プラグインについては本筋から外れそうなので誰かに任せるとして、JSON・XMLの書き出しをインポートするのはできるかもしれない。
ただ、各ビルダにおいて実際どういう結果になればベストなのか、どのくらいカスタマイズは要求されるのかが私はアカデミックに疎めなのでよくわからないところあり。
なお、bibtexを読み込むのは茨すぎるので避けたい。

@kdmsnr
Copy link
Collaborator

kdmsnr commented Oct 30, 2020

MendeleyとReadCubeで共通で出力できるのは.bibと.ris (Research Information Systems) なので、bibtex が無難といえば無難ですけどねえ(茨がどんなものかわからない。。。)

@kdmsnr
Copy link
Collaborator

kdmsnr commented Oct 30, 2020

@kdmsnr
Copy link
Collaborator

kdmsnr commented Oct 30, 2020

gemでよければ ref_parsers (Parser for various types of reference file formats. It currently supports RefMan (.ris) and EndNote (.enw))ってのはありました。
https://rubygems.org/gems/ref_parsers/versions/0.0.11

@kmuto
Copy link
Owner Author

kmuto commented Oct 30, 2020

おぉ。

bibtexはTeXシステム前提で密接すぎるので、あれをHTML/plain/IDGXMLと混ぜるのかなりきつそうな感じがしています。中にTeXマクロ入れられちゃうとその解析どうするのとか。

ref_parser見てみます。あとは結局取り込んでどう表現するのかという問題もありますね…。ユーザが妥当な順序付きで書き出してるのでそれをそのまま出力すればいい、のかな?

@kdmsnr
Copy link
Collaborator

kdmsnr commented Oct 30, 2020

おそらく書き手側はbibtexでファイルを用意したいと思うんですよね。それで、Re:VIEWから使うときは、何かライブラリで読み書きして、そのままは使わないようにするとかですかね。

これは利用者数多そうでした。
https://rubygems.org/gems/bibtex-ruby/versions/5.0.0?locale=ja

@kmuto
Copy link
Owner Author

kmuto commented Oct 30, 2020

実際どれだけ利用者がいるかわからないので、gemがあれば使える、的な利用で問題なさそうですね。
bibtexでもできなくはない、か…。
ちなみに @kdmsnr 的にはこういう機能はあると嬉しい気がします? bibtex出力を活用できる人だと結局普通にTeXで書けちゃうのでは…という気もしたりしなかったり。

@kdmsnr
Copy link
Collaborator

kdmsnr commented Oct 30, 2020

bibtexはツールから作れても、自分でTeXは触れない、というのは一定数いそうな気はします(私もそう)。論文だと規定のテンプレートを埋めればいいでしょうが、同人誌となると自分でいちから整備しないといけないので、Re:VIEWに頼ろうという人はいそうです。なので「参考文献が多い論文っぽい本を同人誌として出したい」という状況であれば、需要がありそうというのはなんとなくわかります。

@kmuto
Copy link
Owner Author

kmuto commented Oct 30, 2020

どっちにしろ@<bib>はともかく //bibpaer はいろいろと作り直したい気持ちがあるので、新しいものとして何か作ってしまってもよいかなと思っています。互換性とるの大変そうだから、@<cite>とかの別名かな…

@kdmsnr
Copy link
Collaborator

kdmsnr commented Oct 30, 2020

@<cite> は既存のものがありました

@kdmsnr
Copy link
Collaborator

kdmsnr commented Oct 30, 2020

まだ雑ですけど、こういう感じでいけそうでした。
(暫定的に ref / references を使っています)

    ## builder.rb
    def citeproc
      require 'bibtex'
      require 'citeproc'
      require 'csl/styles'
      @bibtex ||= BibTeX.open("bib.bib")  # TODO: set via config
      style = 'apa' # TODO: set via config
      @citeproc ||= CiteProc::Processor.new style: style, format: bibtex_format
      @citeproc.import @bibtex.to_citeproc
    rescue LoadError
      error "not found bibtex library"
    end

    def bibtex_format
      "text"
    end

    # @<ref>{key}
    def inline_ref(key)
      citeproc.render :citation, id: key
    end

    # //references
    # print all bibs
    def references
      puts citeproc.bibliography
    end

    ## htmlbuilder.rb
    def bibtex_format
      "html"
    end

    ## compiler.rb
    defsingle :references, 0
    definline :ref

@kdmsnr
Copy link
Collaborator

kdmsnr commented Oct 30, 2020

事前にライブラリが必要です

gem install bibtex-ruby
gem install citeproc-ruby
gem install csl-styles

@kdmsnr
Copy link
Collaborator

kdmsnr commented Nov 2, 2020

実装がものすごく雑で申し訳ないですが…… #1595 で作ってみました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants