Problem:
tex2lyx currently cannot handle commands with optional arguments, because 
the brackets are translated to normal text. LyX then produces {[} instead 
of [. One example where this happens is the userguide.

Solution 1:
Call something like

string opts;
string opt = p.getOpt();
while (opt.size()) {
        opts += opt;
        opt = p.getOpt();
}

after every command and after every closing brace (because we can have 
stupid things like \psfrag{tag}[pos][pspos][scale][rot]{text}). This works 
well with one exception: If a opening bracket follows a command that does 
not take optional arguments like in

\necommand{\foo}{bar}
\foo [more text

the parser goes to the end of the file while searching for the matching 
closing bracket. Things are only slightly better if there is a matching 
closing bracket, because then a false optional argument is created.


Solution 2:
Create a list of commands that take optional arguments and only serach for 
them when they are expected. The drawback is of course the hardcoding of 
commands.


I don't like either solution. Does anybody have a Solution 3 that is better? 
If not, which solution do you prefer?


Georg


Reply via email to