(I know this an old thread, but I just happen to exactly the same feature Idris was asking for) On Thu, Oct 09, 2008 at 12:53:47AM +0200, Mojca Miklavec wrote: > usage: ruby scriptname.rb < input.tex > output.tex > > #!/usr/bin/env ruby > > subs_hash = { > "Mohamed" => "Muḥammad", > "Idris" => "ادريس", > } > > while line = STDIN.gets > subs_hash.each do |key,value| > line.gsub!(Regexp.new(key), value) > end > puts line > end Such approach has a major disadvantage, one have to take care of not altering macros and tex commands or we may end with a broken document (I have more general use case where the to be substituted strings can occur in macros as well), and we know that "only TeX can read TeX" :) I'm thinking in lua callback that get fed with text buffers in a similar way to OTPs, so one can use regular expressions to pre-process the text without messing with node list, think in code that replaces 2nd with 2\high{nd} etc. which would be very complex to be done at node list level. Regards, Khaled -- Khaled Hosny Arabic localiser and member of Arabeyes.org team Free font developer