[PATCH] Always use \newcommandx instead of \def

Richard Kimberly Heck rikiheck at gmail.com
Tue Oct 17 17:10:23 UTC 2023


On 10/16/23 21:22, Isaac Oscar Gariano wrote:
> Currently \def is used for all math macros that have no option 
> arguments. This has caused me hard to debug errors because it silently 
> clobbers pre-existing LaTeX commands. On the other hand, \newcommandx 
> is used if there are optional arguments, and this gives a helpful 
> error message if the command is already defined. (if you really do 
> want to override the command, you can just put 
> \let\mycommand=\undefined in your LaTeX preamble, although with 
> unicode-math I often have to put this in an \AtBeginDocument).
>
> This very simple patch just makes LyX always output \newcommandx 
> instead of \def for math macros.
> Unfortunately, this means if you want to have any math macros you'll 
> always need the xargs package (but it's a small package release all 
> they way back in 2008 and is included in TeXlive), hopefully this 
> won't annoy users too much.

Since we already depend upon xargs, this won't be a problem.


However, I think this might count as a format change, because it changes 
the exported LaTeX. If so, then it would have to wait for 2.5.0. But I'm 
not sure about this, and perhaps the people who actually know about this 
will think it's safe. I'd like to hear.


You might want to have a look at 76dc2c0d3002db, which is where this 
code was introduced. It looks to me as if the previous code was actually 
very similar to what you have, but minus the prefix=\global part, and 
that we could then just have added that. It's a bit puzzling to me why 
Stefan did it the way he did, but he's long since not around to answer 
that question.


Riki

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lyx.org/pipermail/lyx-devel/attachments/20231017/20b0ef22/attachment.html>


More information about the lyx-devel mailing list