2013-10-01 32 views
6

HTML + CSS + Javascript工具提供了一種創建漂亮演示文稿的好方法(例如reveal.js + MathJax)。但是,我通常需要爲我的演示文稿添加引文,並且我希望以系統的方式來完成此操作(因此參考書目已經組織好,參考文件格式良好)。這是通過BibT​​eX在LaTeX中很容易處理的。使用HTML/CSS/Javascript進行參考管理(BibTeX樣式)

到目前爲止,我發現的最佳解決方案來自一個名爲bibtex-js的庫。它似乎很好地將HTML中的BiBTeX文件作爲參考書目列表,這部分是我想要的。但是,我不僅需要提供參考書目清單,還需要參考該參考書目中的條目,並獲取統一格式的參考標記。就拿,膠乳,通常例如,如何處理這個問題:

%In thebibliography.bib 
@article{darwin1859origins, 
    title={On the origins of species by means of natural selection}, 
    author={Darwin, Charles}, 
    journal={London: Murray}, 
    year={1859} 
} 

%In mydocument.tex 
As \cite{darwin1859origins} sustains in his ground-breaking book... 

上面的代碼會被渲染成類似「達爾文(1859)維持在他的開創性著作」。此外,引用被呈現的格式也可以是可定製的(例如「Darwin,1859」,「(Darwing,1859)」,「[DWN59]」,「[1]」等)。

所以問題是,你如何處理HTML文件的類似任務?

謝謝大家提前!

+1

爲了將來的參考,這個問題是焦點StackOverflow:「問題要求我們推薦或找到一個工具,圖書館或最喜歡的場外資源是堆棧溢出題外話,因爲他們傾向於吸引輿論的答案和垃圾郵件而是要描述問題以及迄今爲止解決問題所做的工作。「不過,這可能是http://tex.stackexchange.com上的主題,所以我沒有因爲圖書館請求而投票結束,而是投票遷移到TeX.SE. –

+2

嗨,約書亞。我曾考慮將它放在tex.stackexchange.com上,但事實上,它完全是脫離主題的。它實際上與TeX無關。如果像LaTeX這樣的系統不存在,我的問題仍然有效,因爲我的要求足夠通用。事實上,LaTeX通常能夠實現這一功能,使我能夠更精確地完成對它的定義。但是我再說一遍,這與TeX無關。 至於這個問題是以題目的形式出現的,我會相應地重述它來完成指導方針。感謝你的關心。 – GermanK

回答

0

是的,有一個名爲org-mode的emacs擴展,它是一種類似語法的markdown文本處理。 這可以導出揭示-JS低谷這樣的:https://github.com/yjwen/org-reveal 或者對於我來說我使用spacemacs擴展:https://github.com/syl20bnr/spacemacs/tree/master/layers/%2Bemacs/org#revealjs-support

所以組織模式是編譯成任何你想要的,即揭示-JS,HTML,或中間格式甚至乳膠。 這包括引用管理系統:https://github.com/jkitchin/org-ref

我不滿意這樣的reveal.js,如果我們使用這與我們最終不得不全部引文呈現爲紐帶(無論我們cite:後鍵入reveal.js )和全格式引文被分組在你放置它們的任何幻燈片上(所以如果你有超過3個,你不能正確閱讀它,儘管我猜它是在HTML中)。我想要的是我在乳膠或腳註引用中獲得的數字,因爲在幻燈片腳註的情況下效果很好。

這當然適用於HTML頁面,但您可能想要像我這樣的演示文稿。當我偶然發現這個沒有答案的問題時,我正在尋找解決方案,所以我想這裏是你的答案。

+1

謝謝!我想這是我第一次很遺憾在很久以前選擇vim作爲emacs作爲我的事實編輯。然而,正如你所說,你對這個解決方案也不是很滿意,因爲org-ref的呈現要透露,對嗎?儘管如此,這與我4年前回顧的內容非常接近,即使現在我仍然很樂意發現。 – GermanK

+1

@ GermanK好吧,我也使用vim進行快速編輯(在我發現emacs之前),spacemacs是一個專門針對vim用戶的emacs發行版(我使用它也是一個完整的vim-er)。你應該嘗試一次。 org模式是讓我認真考慮的事情,現在我做大多數文本處理,因爲它的功能非常強大,但仍然是純文本。 –

1

我做了一個項目,順便也叫bibtex-js。可用on npm

我這樣做是因爲大多數BibTeX解析器在那裏需要相當大的解析快捷鍵。本文與BibTeX的權威文檔Tame the BeaST密切配合,因此在引用和解析作者名稱方面效果很好,這看起來像是你的後遺症。

我會說,基於一些書目標準,推出自己的內聯引功能:

import {parseBibFile, normalizeFieldValue} from "bibtex"; 

// Parse bib file 
const bibFile = parseBibFile(bibtexString); // insert the darwin1859origins example as a string 

// Sanity check: print all ids of entries in the bibfile 
console.log(Object.keys(bibFile.entries$)); 

// Get the entry we are after 
const entry = bibFile.getEntry("darwin1859origins"); 

// Get the relevant fields 

// normalizeFieldValue turns a BibTeX string into a Javascript string 
const year = normalizeFieldValue(entry.getField("year")); 
// get first author 
// "author" is a special kind of BibTeX field 
const author = entry.getField("author").authors$[0]; 

function inlineCite(author){ 
    return "(" 
      + (author.firstNames 
       .concat(author.vons) 
       .concat(author.lastNames) 
       .concat(author.jrs)).join(" ") 
      + "," + year 
     + ")"; 
} 

console.log(inlineCite(author)); // (Charles Darwin, 1859) 

你可以做一些與et al.複雜,如果你有多個作者。