Expanze strings v BibTeXovém souboru?
Matej Cepl
cepl at surfbest.net
Mon Sep 29 23:07:12 CEST 2003
On 2003-09-29, 18:27 GMT, Pavel Satrapa wrote:
> sed na to bude asi prilis slaby. Jestli jsem dobre pochopil zadani, mel
> by snad pomoci prilozeny skript v Perlu. Funguje jako filtr - vstupni
> data bere ze stand. vstupu (nebo je lze uvest jako parametry na
> prikazovem radku), vysledek pise do stand. vystupu.
Nějak ne: když to vašeho skriptu pošlu tuto databázi, tak se mi
neprovede žádná záměna:
@string{pub-AP = "Academic Press"}
@string{addr-SD = "San Diego, CA"}
@book{drobak:FNI-1997,
editor = {Drobak, John N. and Nye, John V. C.},
booktitle = {The Frontiers of the New Institutional Economics},
publisher = {pub-AP},
year = 1997,
address = {addr-SD}
}
Pokusil jsem se to přepsat do Pythonu (kterému rozumím alespoň
trochu lépe), ale také jsem nepochodil. Nevíte, kde je problém?
#!/usr/bin/env python
import re, sys, string
strre = re.compile(r'@string\{(\S+)\s*=\s*"(.*)"\}')
otherre = re.compile(r'([^=]+=\s*)[{]+(.*?)[}]+(,\s*)$')
nahrada = {}
inf = sys.stdin
out = sys.stdout
radek = inf.readline()
while (radek != ""):
radek = string.rstrip(radek)
if not(string.find(radek,"@string")):
m = strre.search(radek)
co,zaco = m.groups()
nahrada[string.strip(co)] = string.strip(zaco)
else:
m = otherre.match(radek)
if (m and nahrada.has_key(string.strip(m.group(3)))):
vlevo,vpravo,oddel = m.groups()
vpravomark = string.strip(vpravo)
out.write(vlevo+'{'+nahrada[vpravomark]+'}'+oddel+'\n')
else:
out.write(radek+'\n')
radek = inf.readline()
Děkuji za snahu (vážně),
Matěj
--
Matej Cepl,
GPG Finger: 89EF 4BC6 288A BF43 1BAB 25C3 E09F EF25 D964 84AC
138 Highland Ave. #10, Somerville, Ma 02143, (617) 623-1488
More information about the csTeX
mailing list