LaTeX: Why are digits allowed in environments, but forbidden in commands?What exactly do csname and endcsname do?Why are some characters not allowed in command sequencesWhy does LaTeX make a distinction between commands and environments?Do all starred commands have anything in common?Why are some characters not allowed in command sequencesSuggestions for an automatic taxonomy environmentUse a character other than the backslash for commandsWhy are LaTeX macros so inconsistent?Are end… macro names reserved in LaTeX2e?Can't use command with square brackets in matrix environmentHow to control conditional statements within new commands and environmentsCreating Commands which Make New Environments

Why doesn't H₄O²⁺ exist?

Rock identification in KY

Are astronomers waiting to see something in an image from a gravitational lens that they've already seen in an adjacent image?

Is it possible to do 50 km distance without any previous training?

What is a clear way to write a bar that has an extra beat?

How can bays and straits be determined in a procedurally generated map?

Alternative to sending password over mail?

Approximately how much travel time was saved by the opening of the Suez Canal in 1869?

How does quantile regression compare to logistic regression with the variable split at the quantile?

Has there ever been an airliner design involving reducing generator load by installing solar panels?

Is it unprofessional to ask if a job posting on GlassDoor is real?

Java Casting: Java 11 throws LambdaConversionException while 1.8 does not

How can I make my BBEG immortal short of making them a Lich or Vampire?

Watching something be written to a file live with tail

Why are electrically insulating heatsinks so rare? Is it just cost?

Languages that we cannot (dis)prove to be Context-Free

Horror movie about a virus at the prom; beginning and end are stylized as a cartoon

Why "Having chlorophyll without photosynthesis is actually very dangerous" and "like living with a bomb"?

What does the "remote control" for a QF-4 look like?

Why do I get two different answers for this counting problem?

Which country benefited the most from UN Security Council vetoes?

How is it possible to have an ability score that is less than 3?

Perform and show arithmetic with LuaLaTeX

How old can references or sources in a thesis be?



LaTeX: Why are digits allowed in environments, but forbidden in commands?


What exactly do csname and endcsname do?Why are some characters not allowed in command sequencesWhy does LaTeX make a distinction between commands and environments?Do all starred commands have anything in common?Why are some characters not allowed in command sequencesSuggestions for an automatic taxonomy environmentUse a character other than the backslash for commandsWhy are LaTeX macros so inconsistent?Are end… macro names reserved in LaTeX2e?Can't use command with square brackets in matrix environmentHow to control conditional statements within new commands and environmentsCreating Commands which Make New Environments













2















Finding out that I can have an environment named env2, but no command cmd2, I read Why are some characters not allowed in command sequences, but still I wonder:



Why are digits allowed in environments, but forbidden in commands? In my understanding digits delimit command names (inherited from plain TeX), but why doesn't that restriction apply to environments? Wouldn't it have been more consistent to forbid digits in environment names as well?










share|improve this question






















  • You actually can use numbers in commands. If you do expandafterdefcsname mycommandwithanumber123456endcsname you'll define a command mycommandwithanumber123456. The environments are created using the csname...endcsname pair, so it's fine.

    – Phelype Oleinik
    4 hours ago











  • expandafterdefcsname macro2endcsnamecommand output is valid syntax. You then must use it via csname macro2endcsname.

    – Steven B. Segletes
    4 hours ago












  • So the answer is "There are not forbidden, but they have to be used in a special way. Still it's recommended not to use them."?

    – U. Windl
    4 hours ago















2















Finding out that I can have an environment named env2, but no command cmd2, I read Why are some characters not allowed in command sequences, but still I wonder:



Why are digits allowed in environments, but forbidden in commands? In my understanding digits delimit command names (inherited from plain TeX), but why doesn't that restriction apply to environments? Wouldn't it have been more consistent to forbid digits in environment names as well?










share|improve this question






















  • You actually can use numbers in commands. If you do expandafterdefcsname mycommandwithanumber123456endcsname you'll define a command mycommandwithanumber123456. The environments are created using the csname...endcsname pair, so it's fine.

    – Phelype Oleinik
    4 hours ago











  • expandafterdefcsname macro2endcsnamecommand output is valid syntax. You then must use it via csname macro2endcsname.

    – Steven B. Segletes
    4 hours ago












  • So the answer is "There are not forbidden, but they have to be used in a special way. Still it's recommended not to use them."?

    – U. Windl
    4 hours ago













2












2








2


1






Finding out that I can have an environment named env2, but no command cmd2, I read Why are some characters not allowed in command sequences, but still I wonder:



Why are digits allowed in environments, but forbidden in commands? In my understanding digits delimit command names (inherited from plain TeX), but why doesn't that restriction apply to environments? Wouldn't it have been more consistent to forbid digits in environment names as well?










share|improve this question














Finding out that I can have an environment named env2, but no command cmd2, I read Why are some characters not allowed in command sequences, but still I wonder:



Why are digits allowed in environments, but forbidden in commands? In my understanding digits delimit command names (inherited from plain TeX), but why doesn't that restriction apply to environments? Wouldn't it have been more consistent to forbid digits in environment names as well?







macros environments






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 4 hours ago









U. WindlU. Windl

1597




1597












  • You actually can use numbers in commands. If you do expandafterdefcsname mycommandwithanumber123456endcsname you'll define a command mycommandwithanumber123456. The environments are created using the csname...endcsname pair, so it's fine.

    – Phelype Oleinik
    4 hours ago











  • expandafterdefcsname macro2endcsnamecommand output is valid syntax. You then must use it via csname macro2endcsname.

    – Steven B. Segletes
    4 hours ago












  • So the answer is "There are not forbidden, but they have to be used in a special way. Still it's recommended not to use them."?

    – U. Windl
    4 hours ago

















  • You actually can use numbers in commands. If you do expandafterdefcsname mycommandwithanumber123456endcsname you'll define a command mycommandwithanumber123456. The environments are created using the csname...endcsname pair, so it's fine.

    – Phelype Oleinik
    4 hours ago











  • expandafterdefcsname macro2endcsnamecommand output is valid syntax. You then must use it via csname macro2endcsname.

    – Steven B. Segletes
    4 hours ago












  • So the answer is "There are not forbidden, but they have to be used in a special way. Still it's recommended not to use them."?

    – U. Windl
    4 hours ago
















You actually can use numbers in commands. If you do expandafterdefcsname mycommandwithanumber123456endcsname you'll define a command mycommandwithanumber123456. The environments are created using the csname...endcsname pair, so it's fine.

– Phelype Oleinik
4 hours ago





You actually can use numbers in commands. If you do expandafterdefcsname mycommandwithanumber123456endcsname you'll define a command mycommandwithanumber123456. The environments are created using the csname...endcsname pair, so it's fine.

– Phelype Oleinik
4 hours ago













expandafterdefcsname macro2endcsnamecommand output is valid syntax. You then must use it via csname macro2endcsname.

– Steven B. Segletes
4 hours ago






expandafterdefcsname macro2endcsnamecommand output is valid syntax. You then must use it via csname macro2endcsname.

– Steven B. Segletes
4 hours ago














So the answer is "There are not forbidden, but they have to be used in a special way. Still it's recommended not to use them."?

– U. Windl
4 hours ago





So the answer is "There are not forbidden, but they have to be used in a special way. Still it's recommended not to use them."?

– U. Windl
4 hours ago










1 Answer
1






active

oldest

votes


















5














The restriction is in the scanner, tex's "eyes" in the texbook terminology. Any sequence of characters may be used as a command name, however after a character of catcode 0 (normally ) then tex scans the next non-letter (character of catcode other than 11) or a contiguous sequence of letters, and tokenizes it as a single csname token.



This means that foo123 normally parses as the token foo followed by the three tokens 1, 2, 3. Unless you make digits catcode 11. Similarly section* is normally the token section followed by the token *.



environment names use do not require to parse the name via the escape character, (they use the csname primitive but that's an implementation detail so begintabular accesses tabular but begintabular* accesses the command with name tabular* (not the two tokens that would normally be generated by parsing tabular*).



So technically it would be quite hard to not allow digits (or other characters) in environment names, especially when latex was designed there was not the memory available to add that kind of character-by-character check.






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%2f483440%2flatex-why-are-digits-allowed-in-environments-but-forbidden-in-commands%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









    5














    The restriction is in the scanner, tex's "eyes" in the texbook terminology. Any sequence of characters may be used as a command name, however after a character of catcode 0 (normally ) then tex scans the next non-letter (character of catcode other than 11) or a contiguous sequence of letters, and tokenizes it as a single csname token.



    This means that foo123 normally parses as the token foo followed by the three tokens 1, 2, 3. Unless you make digits catcode 11. Similarly section* is normally the token section followed by the token *.



    environment names use do not require to parse the name via the escape character, (they use the csname primitive but that's an implementation detail so begintabular accesses tabular but begintabular* accesses the command with name tabular* (not the two tokens that would normally be generated by parsing tabular*).



    So technically it would be quite hard to not allow digits (or other characters) in environment names, especially when latex was designed there was not the memory available to add that kind of character-by-character check.






    share|improve this answer





























      5














      The restriction is in the scanner, tex's "eyes" in the texbook terminology. Any sequence of characters may be used as a command name, however after a character of catcode 0 (normally ) then tex scans the next non-letter (character of catcode other than 11) or a contiguous sequence of letters, and tokenizes it as a single csname token.



      This means that foo123 normally parses as the token foo followed by the three tokens 1, 2, 3. Unless you make digits catcode 11. Similarly section* is normally the token section followed by the token *.



      environment names use do not require to parse the name via the escape character, (they use the csname primitive but that's an implementation detail so begintabular accesses tabular but begintabular* accesses the command with name tabular* (not the two tokens that would normally be generated by parsing tabular*).



      So technically it would be quite hard to not allow digits (or other characters) in environment names, especially when latex was designed there was not the memory available to add that kind of character-by-character check.






      share|improve this answer



























        5












        5








        5







        The restriction is in the scanner, tex's "eyes" in the texbook terminology. Any sequence of characters may be used as a command name, however after a character of catcode 0 (normally ) then tex scans the next non-letter (character of catcode other than 11) or a contiguous sequence of letters, and tokenizes it as a single csname token.



        This means that foo123 normally parses as the token foo followed by the three tokens 1, 2, 3. Unless you make digits catcode 11. Similarly section* is normally the token section followed by the token *.



        environment names use do not require to parse the name via the escape character, (they use the csname primitive but that's an implementation detail so begintabular accesses tabular but begintabular* accesses the command with name tabular* (not the two tokens that would normally be generated by parsing tabular*).



        So technically it would be quite hard to not allow digits (or other characters) in environment names, especially when latex was designed there was not the memory available to add that kind of character-by-character check.






        share|improve this answer















        The restriction is in the scanner, tex's "eyes" in the texbook terminology. Any sequence of characters may be used as a command name, however after a character of catcode 0 (normally ) then tex scans the next non-letter (character of catcode other than 11) or a contiguous sequence of letters, and tokenizes it as a single csname token.



        This means that foo123 normally parses as the token foo followed by the three tokens 1, 2, 3. Unless you make digits catcode 11. Similarly section* is normally the token section followed by the token *.



        environment names use do not require to parse the name via the escape character, (they use the csname primitive but that's an implementation detail so begintabular accesses tabular but begintabular* accesses the command with name tabular* (not the two tokens that would normally be generated by parsing tabular*).



        So technically it would be quite hard to not allow digits (or other characters) in environment names, especially when latex was designed there was not the memory available to add that kind of character-by-character check.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited 3 hours ago









        Phelype Oleinik

        24.9k54690




        24.9k54690










        answered 3 hours 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%2f483440%2flatex-why-are-digits-allowed-in-environments-but-forbidden-in-commands%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

            Disable / Remove link to Product Items in Cart Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?How can I limit products that can be bought / added to cart?Remove item from cartHide “Add to Cart” button if specific products are already in cart“Prettifying” the custom options in cart pageCreate link in cart sidebar to view all added items After limit reachedLink products together in checkout/cartHow to Get product from cart and add it againHide action-edit on cart page if simple productRemoving Cart items - ObserverRemove wishlist items when added to cart

            Helsingin valtaus Sisällysluettelo Taustaa | Yleistä sotatoimista | Osapuolet | Taistelut Helsingin ympäristössä | Punaisten antautumissuunnitelma | Taistelujen kulku Helsingissä | Valtauksen jälkeen | Tappiot | Muistaminen | Kirjallisuutta | Lähteet | Aiheesta muualla | NavigointivalikkoTeoksen verkkoversioTeoksen verkkoversioGoogle BooksSisällissota Helsingissä päättyi tasan 95 vuotta sittenSaksalaisten ylivoima jyräsi punaisen HelsinginSuomalaiset kuvaavat sotien jälkiä kaupungeissa – katso kuvat ja tarinat tutuilta kulmiltaHelsingin valtaus 90 vuotta sittenSaksalaiset valtasivat HelsinginHyökkäys HelsinkiinHelsingin valtaus 12.–13.4. 1918Saksalaiset käyttivät ihmiskilpiä Helsingin valtauksessa 1918Teoksen verkkoversioTeoksen verkkoversioSaksalaiset hyökkäävät Etelä-SuomeenTaistelut LeppävaarassaSotilaat ja taistelutLeppävaara 1918 huhtikuussa. KapinatarinaHelsingin taistelut 1918Saksalaisten voitonparaati HelsingissäHelsingin valtausta juhlittiinSaksalaisten Helsinki vuonna 1918Helsingin taistelussa kaatuneet valkokaartilaisetHelsinkiin haudatut taisteluissa kaatuneet punaiset12.4.1918 Helsingin valtauksessa saksalaiset apujoukot vapauttavat kaupunginVapaussodan muistomerkkejä Helsingissä ja pääkaupunkiseudullaCrescendo / Vuoden 1918 Kansalaissodan uhrien muistomerkkim

            Adjektiivitarina Tarinan tekeminen | Esimerkki: ennen | Esimerkki: jälkeen | Navigointivalikko