Konwencję sobie przyjąłem, że pole tp:keywords
zawiera moje słowa kluczowe. Czemu tak? Ano temu, że moja baza bibtexa zawiera wpisy skopiowane z różnych repozytoriów; wpisy te zawierają pole keywords
, tyle że nie ma żadnych reguł odnośnie tego co jest zawartością tego pola. Zawartość pola tp:keywords
jest (przynajmniej w założeniu) słownikiem ustalonym (controlled vocabulary) pojęć. Podobnie pole tp:comment
zawiera mój, krótki opis zawartości pozycji bibliograficznej. W szczególności pola te pomagają posortować/wyciągnąć pozycje bibliograficzne, relewantne z punktu widzenia określonej dziedziny zastosowań. Używam do tego narzędzia bibtool
:
bibtool -- 'select {tp:keywords "OSS" }' tph.bib
Powyższe oznacza: wypisz wszystkie rekordy z pliku tph.bib
, które zawierają napis OSS
w polu tp:keywords
. Napis "OSS"
jest traktowany jako wyrażenie regularne (regex 0.12):
bibtool -- 'select {tp:keywords "OSS\|UTAUT" }' tph.bib
Powyższe oznacza: wypisz wszystkie rekordy z pliku tph.bib
, które zawierają napis OSS
lub napis UTAUT
w polu tp:keywords
. Wyrażenie regularne może zawierać inne metaznaki: .
, +
, *
, itd. Jest znak sumy (a lub b) ale nie ma iloczynu (a i b). Jeżeli chcemy wyciągnąć rekordy zawierająca łącznie pewne napisy, to można wykorzystać mechanizm potoku:
bibtool -- 'select {tp:keywords "#Prio" }' tph.bib |\
bibtool -- 'select {tp:keywords "OSS" }' | \
bibtool -- 'select {tp:keywords "SEM" }'
Powyższe oznacza: wypisz wszystkie rekordy z pliku tph.bib
, które zawierają napisy OSS
, SEM
oraz #Prio
(w dowolnym porządku) w polu tp:keywords
. Słowo kluczowe #Prio
to moja konwencja na oznaczenie ważnych wpisów. Innymi słowy powyższe oznacza: wypisz ważne pozycje literatury dotyczące (łącznie) OSS i SEM.
Do zamiany plików bibtexa na xhtml używam narzędzia bib2xhtml
. Ten pakiet jest niestandardowy -- z tego co pamiętam -- trzeba go ściągnąć i zainstalować samodzielnie...
Moja baza bibtexa zawiera kilkaset wpisów, dotyczących różnych dziedzin i o różnym stopniu ważności (od merytorycznie istotnych do słabych; słabe też trzeba gromadzić--np. jako przykłady). Stąd powyższe pomysły, żeby trochę nad tym wszystkim zapanować...
Modyfikując bib2xhtml
, który jest programem napisanym w Perlu, zmarnowałem trochę czasu usiłując dodać konwersję (brakujących) polskich znaków diakrytycznych. Otóż bib2xhtml
zakłada iż plik jest kodowany w notacji LaTeXa (7 bitowe ASCII), przy czym nie są zaimplementowane znaki zawierające ogonek. Proste wpisanie:
s/\\k\{a\}/ą/g;
Nie chciało zadziałać. Po bliższym obejrzeniu skryptu się okazało, że każdy wiersz pliku jest wstępnie zamieniany poprzez wykonanie następującego polecenia:
## fragment jest wykonywany wew. pętli, `iterującej' po wszystkich wierszach pliku:
{ local ($c, $l, $z) = (0, 0, ());
s/([\{\}])/join("","\001",($1 eq "\{" ? $z[$l++]=$c++ : $z[--$l]),$1)/ge;
## ge oznacza, globalnie+extended mode, dzięki czemu powyższe ma charakter pętli
## wykonywanej dla każdego znaku { oraz }
}
W rezultacie każda sekwencja {...}
zostanie zamieniona na \nnn{...\nnn}
, gdzie \nnn
jest znakiem o kodzie nnn
. Przykładowo jeżeli wiersz zawiera:
{abc} {def} {ghi} jkl... => \001{abc\001} \002{def\002} \003{ghi\003} jkl...
Dzięki czemu każda para { ... }
jest teraz jednoznacznie identyfikowana. Dokładnie nie wiem po co jest taka sztuczka robiona. Ale teraz zamiana przykładowo \k{a}
, tj.~polskiego ą
w notacji LaTeXa, wymaga zapisu:
s/\\k(\001\d+)\{a\1\}/ą/g;
Brak komentarzy:
Prześlij komentarz