BibTex styl a automatizace porodu bibliografie

Vše o státnicích úspěšně završujících roky studia na naší alma mater.
JakubT

BibTex styl a automatizace porodu bibliografie

Příspěvek od JakubT »

Už se na to před časem trochu narazilo - není úplně legrace mít správně zformátovanou bibliografii. Nabízím následující postup, jak automaticky (no, skoro) generovat bibliografii dle normy. Možná to tak nevypadá, ale je to určité zjednodušení práce. Upozornění - jedná se o anglickou verzi (tj. p. místo s. pro čísla stránek atd.). Kdybyste moc toužili po české verzi, lze to zkusit i nějak trochu přeložit, resp. použít překladový soubor odjinud. A pak to používám v harvardském stylu citací - ale asi by to šlo použít i v "klasickém" číslování v hranatých závorkách.

K provedení algoritmu je potřeba Matlab (ano, je to úchylárna to používat na tohle, uznávám :oops: ... ale aspoň je ve škole přístupný, pokud ho nemáte doma, jde se vzdáleně připojit a použít ho tam, případně kdo není jen mozek v láhvi může do školy i reálně dojít).

Algoritmus:
1) Stáhněte si archiv: http://uloz.to/x22tyxP/bib-zip. Obsahuje dva matlabí skripty (použijí se časem) a jeden soubor stylů (ten zkopírujte do složky se zdrojáky texu, příp. TexnicCentre projektu). Ten soubor stylů je fakt super, doporučuju přečíst - jakou zavrženou duši napadlo nutit programátora k psaní v suffixové notaci, to by mě fakt zajímalo.
2) V kódu diplomky: K balíčkům přidejte
\usepackage{natbib}
- to umožní harvardskou notaci. Za \begin{document} dodejte
\renewcommand{\cite}{\citep}
- tím se dokončí přechod k temné stra... k harvardské notaci. A pak někam (kde chcete vysadit bibliografii) dejte:
\bibliographystyle{mffstyle}
\bibliography{exportlist}
- první řádek říká, že se má pro formátování použít mffstyle.bst, druhý, že má bibliografii nacucnout ze souboru exportlist.bib.
3) Jde se na citace. Použijeme aplikaci EndNote Web: http://www.myendnoteweb.com. Dobrá zpráva je, že umí v databázích vyhledávat publikace, ukládat je do složek (což se hodí, protože když pak děláte na jiném projektu, než je diplomka, tak si triválně překopírujete citace a jedete...) a pak vyexportovat pro bibtex. No, špatná zpráva je, že při tom vyhledávání to zkrátí křestní autora na první písmeno a tečku, což odporuje krásné a chytré normě ISO 690. Takže jinak (ale přesto s EndNote Web!). Vlezeme do Google scholar - vložíme název citovaného článku, ono ho to najde (snad :)), načež klikneme na Citovat pod nalezeným článkem - a tam Import do programu EndNote. Mělo by to stáhnout soubor scholar.enw.
4) Takhle si postahujeme soubory pro všechny relevantní články, čímž získáme scholar.enw, scholar (1).enw, scholar (2).enw... Teď je dáme do složky se skriptem spojovac (musí to být jediné enw soubory v té složce) - a spojovač pustíme. Vyplivne to merged.enw (soubor obsahující všechny ty citace - to nám dovolí hromadný import do EndNote).
5) Vlezeme do EndNote Web a v Collect/Import references si reference naimportujeme do zamýšlené složky. Kouzlo - najednou jsou autoři uvedeni s nezkráceným křestním jménem. Sláva. Ručně doplníme zbytek citací (z cizích diplomek apod., které nejsou ve Scholaru).
6) Tak, když jsme si tak pěkně citace naimportovali...tak je zase vyexportujeme (Format/Export references) - a pro bibtex. Už je skoro vyhráno - ale jednak podle normy má být číslo svazku tučně, druhak by bylo hezké mít automaticky vygenerovaná jména článků/zdrojů, abychom mohli přímo citovat a nemuseli u každé položky bibtexu dopisovat název návěští. A o to se postará druhý matlabí skript - buřtíkovač (aby to udělal tučné).
7) Vezmeme soubor exportlist.txt, který vypadnul z exportu z EndNote a hodíme ho do složky k buřtíkovači (nebo naopak) - a pustíme buřtíkovač. Ten tedy jednak vytuční "volume" (je-li definován), druhak každé položce přiřadí název, pomocí kterého se cituje - je to vždy za @article{Název návěští, (místo article může být i něco jiného, samozřejmě, to nevadí). Název návěští se skládá z příjmení prvního autora a roku. Tj. pokud Ferdinand Vomacka v 2016 napsal článek "On nature of time travel", tak se to z textu cituje jako \cite{Vomacka2016}.

Po spuštění buřtíkovače nám vypadne exportlist.bib, který dáme k zdrojákům; a to už je skoro ten svatý grál. Než se z něj napijeme, může být potřeba ještě něco doladit. Na co jsem narazil:
a) ten exportlist.bib musí být v nějakém 8bitovém kódování, prý. Já použil Ansi, běhá to s tím. Konvertoval jsem to sofistikovaně - prostě jsem otevřel ten soubor v Notepadu2, dal Encoding, ANSI, potvrdil, že vím, že se může zhroutit vesmír a bylo to.
b) Může se stát, že jeden autor (případně víc autorů stejného jména) napsal víc článků v roce a tedy návěští nefunguje, protože se vyskytne vícekrát stejné. Tak pak můžeme buď strávit hodinu tím, že budeme psát automatický skript, který to upraví... a nebo za deset vteřin za ty roky publikace napíšeme a,b,c,...

Tak snad se bude líbit, případné problémy sem házejte (ideálně i s kódy, abych to kdyžtak mohl zreplikovat), navrhujte vylepšení atd. Případně, pokud jsem přes úžasnou přehlednost a logičnost ISO 690 přehlédl nějaké pravidlo a citace to plive blbě, tak taky dejte vědět, zkusím s tím něco udělat.
Acris
Matfyz(ák|ačka) level I
Příspěvky: 20
Registrován: 26. 1. 2010 14:28
Typ studia: Informatika Mgr.
Bydliště: Praha

Re: BibTex styl a automatizace porodu bibliografie

Příspěvek od Acris »

Díky moc. Ještě pro jistotu nahrávám příslušný archiv přímo sem, kdyby to bylo časem ze serveru uloz.to třeba smazáno...;)
bib.zip
Tři užitečné soubory pro citace s balíčkem natbib v angličtině dle normy ISO 690.
(6.84 KiB) Staženo 258 x
Odpovědět

Zpět na „Magisterské SZZ“