143d142
< 
172a172
>         {casesensitivestrings.arg {}}
253a254,260
>     if { [info exists state(-casesensitivestrings)] &&
>          $state(-casesensitivestrings) } {
>         set state(casesensitivestrings) 1
>     } else {
>         set state(casesensitivestrings) 0
>     }
> 
260,261d266
<     #puts stdout "Callback ($token $type ($args))"
< 
366c371
< 	} elseif {[regexp -nocase {\s*string[^\{]*\{(.*)\}[^\}]*} \
---
> 	} elseif {[regexp -nocase {^\s*string[^\{]*\{(.*)\}[^\}]*} \
369,370c374,378
< 	    Callback $token string [ParseBlock $rest]
< 
---
>             if {$data($token,casesensitivestrings)} {
>                 Callback $token string [ParseString $rest]
>             } else {
>                 Callback $token string [ParseBlock $rest]
>             }
374d381
< 
378c385,390
< 	    set rest [string map -nocase $data($token,strings) $rest]
---
>             if {$data($token,casesensitivestrings)} {
>                 # puts $data($token,strings)
>                 set rest [string map $data($token,strings) $rest]
>             } else {
>                 set rest [string map -nocase $data($token,strings) $rest]
>             }
385a398,403
> }
> 
> proc ::bibtex::ParseString {block} {
>     regexp \
>         {(\S+)[^=]*=(.*)} $block -> key rest
>     return [list $key $rest]
