[PATCH] Always use \newcommandx instead of \def

Enrico Forestieri forenr at lyx.org
Tue Oct 17 18:50:44 UTC 2023


On Tue, Oct 17, 2023 at 08:29:12PM +0200, Enrico Forestieri wrote:
> 
>On Tue, Oct 17, 2023 at 01:10:23PM -0400, Richard Kimberly Heck wrote:
>>
>>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.
>
>Independently from that, this is a change that needs a lot of testing 
>and it is risky to perform near a release.
>
>>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.
>
>I seem to remember that he was actually forced to abandon the 
>\newcommandx approach due to some technical reason. Maybe there is a 
>bug report with details about this.

Anyway, this actually is the following enhancement request:
https://www.lyx.org/trac/ticket/11185

-- 
Enrico


More information about the lyx-devel mailing list