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