Use of noexpand in the implementation of TextOrMath for eTeXWhen to use edef, noexpand, and expandafter?Does noexpand have to be a primitive?Problem with nested noexpand and edefReplacement for unexpanded without eTeX extensionWhy do some arguments in a macro need to be preceded by noexpand?How to use noexpand in an edef?Why six noexpand in a row?How can I use noexpand and unexpanded without appending a space to the unexpanded tokens?How should I /protect this command for use in csname?ifx doesn't treat noexpand as relax

How to prevent "they're falling in love" trope

How to travel to Japan while expressing milk?

Rotate ASCII Art by 45 Degrees

How to remove border from elements in the last row?

Getting extremely large arrows with tikzcd

What Exploit Are These User Agents Trying to Use?

Why is it a bad idea to hire a hitman to eliminate most corrupt politicians?

Does the feature within Tides of Chaos bypass the limitation of 1/day?

Why was the shrink from 8″ made only to 5.25″ and not smaller (4″ or less)

Unlock My Phone! February 2018

Were days ever written as ordinal numbers when writing day-month-year?

Avoiding the "not like other girls" trope?

How to compare a string

What reasons are there for a Capitalist to oppose a 100% inheritance tax?

Did 'Cinema Songs' exist during Hiranyakshipu's time?

Why was Sir Cadogan fired?

Knowledge-based authentication using Domain-driven Design in C#

Car headlights in a world without electricity

Machine learning testing data

What is a Samsaran Word™?

Is this draw by repetition?

How to compactly explain secondary and tertiary characters without resorting to stereotypes?

Placement of More Information/Help Icon button for Radio Buttons

How to coordinate airplane tickets?



Use of noexpand in the implementation of TextOrMath for eTeX


When to use edef, noexpand, and expandafter?Does noexpand have to be a primitive?Problem with nested noexpand and edefReplacement for unexpanded without eTeX extensionWhy do some arguments in a macro need to be preceded by noexpand?How to use noexpand in an edef?Why six noexpand in a row?How can I use noexpand and unexpanded without appending a space to the unexpanded tokens?How should I /protect this command for use in csname?ifx doesn't treat noexpand as relax













4















In latexrelease 2015/01/01, there are two implementations of TextOrMath: one for regular
TeX, the other one for eTeX-like engines (more precisely: those which support protected). My question concerns the latter:



protectedexpandafterdefcsname TextOrMathspaceendcsname%
(...) % no problem here
edefTextOrMath#1#2% from latex.ltx
expandafternoexpandcsname TextOrMathspaceendcsname
#1#2


I think I understand well these definitions, however I can't figure out why the edef isn't simply written this way:



edefTextOrMath#1#2% from me
csname TextOrMathspaceendcsname
#1#2


Since the internal TextOrMath<space> macro is protected, what is the point of preceding it with noexpand inside the edef? Is it because the author feared that protected might be deficient?..



I made a test like this (ran with pdfTeX):



% From latex.ltx (or p. 153 of source2e.pdf)
protectedexpandafterdefcsname TextOrMathspaceendcsname%
ifmmode expandafter@secondoftwo
else expandafter@firstoftwo fi

edefTextOrMath#1#2%
expandafternoexpandcsname TextOrMathspaceendcsname
#1#2

% My simpler way of doing the same (?)
edefaltTextOrMath#1#2%
csname TextOrMathspaceendcsname
#1#2

showTextOrMath % TextOrMath=macro:#1#2->TextOrMath #1#2.
showaltTextOrMath % altTextOrMath=ditto

ifxTextOrMathaltTextOrMath
identical
else
different
fi

vfill
eject
bye


This test prints 'identical' and seems to indicate that my definition is equivalent to the one in latex.ltx (but slightly simpler). Did I miss something?



Thanks!










share|improve this question






















  • thanks I suppose we could change that:-)

    – David Carlisle
    1 hour ago











  • Many thanks for your insight into this, I was really puzzled!

    – frougon
    1 hour ago















4















In latexrelease 2015/01/01, there are two implementations of TextOrMath: one for regular
TeX, the other one for eTeX-like engines (more precisely: those which support protected). My question concerns the latter:



protectedexpandafterdefcsname TextOrMathspaceendcsname%
(...) % no problem here
edefTextOrMath#1#2% from latex.ltx
expandafternoexpandcsname TextOrMathspaceendcsname
#1#2


I think I understand well these definitions, however I can't figure out why the edef isn't simply written this way:



edefTextOrMath#1#2% from me
csname TextOrMathspaceendcsname
#1#2


Since the internal TextOrMath<space> macro is protected, what is the point of preceding it with noexpand inside the edef? Is it because the author feared that protected might be deficient?..



I made a test like this (ran with pdfTeX):



% From latex.ltx (or p. 153 of source2e.pdf)
protectedexpandafterdefcsname TextOrMathspaceendcsname%
ifmmode expandafter@secondoftwo
else expandafter@firstoftwo fi

edefTextOrMath#1#2%
expandafternoexpandcsname TextOrMathspaceendcsname
#1#2

% My simpler way of doing the same (?)
edefaltTextOrMath#1#2%
csname TextOrMathspaceendcsname
#1#2

showTextOrMath % TextOrMath=macro:#1#2->TextOrMath #1#2.
showaltTextOrMath % altTextOrMath=ditto

ifxTextOrMathaltTextOrMath
identical
else
different
fi

vfill
eject
bye


This test prints 'identical' and seems to indicate that my definition is equivalent to the one in latex.ltx (but slightly simpler). Did I miss something?



Thanks!










share|improve this question






















  • thanks I suppose we could change that:-)

    – David Carlisle
    1 hour ago











  • Many thanks for your insight into this, I was really puzzled!

    – frougon
    1 hour ago













4












4








4








In latexrelease 2015/01/01, there are two implementations of TextOrMath: one for regular
TeX, the other one for eTeX-like engines (more precisely: those which support protected). My question concerns the latter:



protectedexpandafterdefcsname TextOrMathspaceendcsname%
(...) % no problem here
edefTextOrMath#1#2% from latex.ltx
expandafternoexpandcsname TextOrMathspaceendcsname
#1#2


I think I understand well these definitions, however I can't figure out why the edef isn't simply written this way:



edefTextOrMath#1#2% from me
csname TextOrMathspaceendcsname
#1#2


Since the internal TextOrMath<space> macro is protected, what is the point of preceding it with noexpand inside the edef? Is it because the author feared that protected might be deficient?..



I made a test like this (ran with pdfTeX):



% From latex.ltx (or p. 153 of source2e.pdf)
protectedexpandafterdefcsname TextOrMathspaceendcsname%
ifmmode expandafter@secondoftwo
else expandafter@firstoftwo fi

edefTextOrMath#1#2%
expandafternoexpandcsname TextOrMathspaceendcsname
#1#2

% My simpler way of doing the same (?)
edefaltTextOrMath#1#2%
csname TextOrMathspaceendcsname
#1#2

showTextOrMath % TextOrMath=macro:#1#2->TextOrMath #1#2.
showaltTextOrMath % altTextOrMath=ditto

ifxTextOrMathaltTextOrMath
identical
else
different
fi

vfill
eject
bye


This test prints 'identical' and seems to indicate that my definition is equivalent to the one in latex.ltx (but slightly simpler). Did I miss something?



Thanks!










share|improve this question














In latexrelease 2015/01/01, there are two implementations of TextOrMath: one for regular
TeX, the other one for eTeX-like engines (more precisely: those which support protected). My question concerns the latter:



protectedexpandafterdefcsname TextOrMathspaceendcsname%
(...) % no problem here
edefTextOrMath#1#2% from latex.ltx
expandafternoexpandcsname TextOrMathspaceendcsname
#1#2


I think I understand well these definitions, however I can't figure out why the edef isn't simply written this way:



edefTextOrMath#1#2% from me
csname TextOrMathspaceendcsname
#1#2


Since the internal TextOrMath<space> macro is protected, what is the point of preceding it with noexpand inside the edef? Is it because the author feared that protected might be deficient?..



I made a test like this (ran with pdfTeX):



% From latex.ltx (or p. 153 of source2e.pdf)
protectedexpandafterdefcsname TextOrMathspaceendcsname%
ifmmode expandafter@secondoftwo
else expandafter@firstoftwo fi

edefTextOrMath#1#2%
expandafternoexpandcsname TextOrMathspaceendcsname
#1#2

% My simpler way of doing the same (?)
edefaltTextOrMath#1#2%
csname TextOrMathspaceendcsname
#1#2

showTextOrMath % TextOrMath=macro:#1#2->TextOrMath #1#2.
showaltTextOrMath % altTextOrMath=ditto

ifxTextOrMathaltTextOrMath
identical
else
different
fi

vfill
eject
bye


This test prints 'identical' and seems to indicate that my definition is equivalent to the one in latex.ltx (but slightly simpler). Did I miss something?



Thanks!







macros expansion definition protected-macro






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 3 hours ago









frougonfrougon

641611




641611












  • thanks I suppose we could change that:-)

    – David Carlisle
    1 hour ago











  • Many thanks for your insight into this, I was really puzzled!

    – frougon
    1 hour ago

















  • thanks I suppose we could change that:-)

    – David Carlisle
    1 hour ago











  • Many thanks for your insight into this, I was really puzzled!

    – frougon
    1 hour ago
















thanks I suppose we could change that:-)

– David Carlisle
1 hour ago





thanks I suppose we could change that:-)

– David Carlisle
1 hour ago













Many thanks for your insight into this, I was really puzzled!

– frougon
1 hour ago





Many thanks for your insight into this, I was really puzzled!

– frougon
1 hour ago










1 Answer
1






active

oldest

votes


















3














No you didn't miss anything, just old habits die hard as we gradually add these modern post 1992 features into the sources....






share|improve this answer























    Your Answer








    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "85"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f482829%2fuse-of-noexpand-in-the-implementation-of-textormath-for-etex%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    3














    No you didn't miss anything, just old habits die hard as we gradually add these modern post 1992 features into the sources....






    share|improve this answer



























      3














      No you didn't miss anything, just old habits die hard as we gradually add these modern post 1992 features into the sources....






      share|improve this answer

























        3












        3








        3







        No you didn't miss anything, just old habits die hard as we gradually add these modern post 1992 features into the sources....






        share|improve this answer













        No you didn't miss anything, just old habits die hard as we gradually add these modern post 1992 features into the sources....







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 1 hour ago









        David CarlisleDavid Carlisle

        497k4111441891




        497k4111441891



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to TeX - LaTeX Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f482829%2fuse-of-noexpand-in-the-implementation-of-textormath-for-etex%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Canceling a color specificationRandomly assigning color to Graphics3D objects?Default color for Filling in Mathematica 9Coloring specific elements of sets with a prime modified order in an array plotHow to pick a color differing significantly from the colors already in a given color list?Detection of the text colorColor numbers based on their valueCan color schemes for use with ColorData include opacity specification?My dynamic color schemes

            Invision Community Contents History See also References External links Navigation menuProprietaryinvisioncommunity.comIPS Community ForumsIPS Community Forumsthis blog entry"License Changes, IP.Board 3.4, and the Future""Interview -- Matt Mecham of Ibforums""CEO Invision Power Board, Matt Mecham Is a Liar, Thief!"IPB License Explanation 1.3, 1.3.1, 2.0, and 2.1ArchivedSecurity Fixes, Updates And Enhancements For IPB 1.3.1Archived"New Demo Accounts - Invision Power Services"the original"New Default Skin"the original"Invision Power Board 3.0.0 and Applications Released"the original"Archived copy"the original"Perpetual licenses being done away with""Release Notes - Invision Power Services""Introducing: IPS Community Suite 4!"Invision Community Release Notes

            François Viète Contents Biography Work and thought Bibliography See also Notes Further reading External links Navigation menup. 21Google Bookspp. 75–77Google BooksDe thou (from University of Saint Andrews)ArchivedGoogle BooksGoogle BooksGoogle BooksGoogle booksGoogle Bookscc-parthenay.frL'histoire universelle (fr)Universal History (en)ArchivedAdsabs.harvard.eduPagesperso-orange.frArchive.orgChikara Sasaki. Descartes' mathematical thought p.259Google BooksGoogle BooksGoogle Bookspp. 152 and onwardGoogle BooksGoogle BooksScribd.comGoogle Books1257-7979Google BooksGoogle BooksGoogle BooksGoogle BooksGoogle BooksGoogle BooksGallica.bnf.frGoogle BooksGoogle Books"François Viète"Francois Viète: Father of Modern Algebraic NotationThe Lawyer and the GamblerAbout TarporleySite de Jean-Paul GuichardL'algèbre nouvelle"About the Harmonicon"cb120511976(data)1188044800000 0001 0913 5903n82164680ola2013766880073431702w6vt1sb70287374827140948071409480