# Setting the backslash's catcode

For fun, I want to change the backslash's catcode from 0 to 12. However, I can't seem to make it work. Here's my current MWE, which gives an error "improper alphabetic constant":

``````\catcode`\textbackslash=12
``````

I know that `\textbackslash` is not the right one, however, I can't seem to find a command for a program backslash. Could someone please help? By the way, I have the forward slash's catcode set to 0 just in case the problem is that I need to change the character for commands.

`\textbackslash` is just for typesetting. As the name says, it's a text command, so it just prints the character `\` from the current font, and isn't of any use for anything other than that.

You are looking for:

``````\catcode`\\=12
``````

The syntax for the `\catcode` primitive is `\catcode<number>=<catcode>`, and it sets the catcode of the character whose ASCII code is `<number>` to `<catcode>`. This means that you could also use:

``````\catcode 92=12
``````

However it's a mouthful to remember all the ASCII codes, and your code becomes quite a lot less readable. To improve on that TeX allows you to specify a number using an “alphabetic constant”. To do that, the `<number>` should start with a ```, followed by the character token you want to make a number of. Valid alphabetic constants are ``a`, ``*`, etc.

The only problem is that a catcode-0 character (here the backslash) doesn't produce a token, so neither:

``````\catcode`\=12
\catcode`\ =12
``````

do what you want (the first one changes the catcode of `=`, and the second the catcode of ). To specify these characters, TeX allows you to escape the character with a backslash, so to specify the alphabeitc constant ``\` you prefix it with another backslash: ``\\`, so:

``````\catcode`\\=12
``````
• So, the ` allows you to change `\` from newline to a backslash? I didn't know that! +1 and accept – Someone May 11 '20 at 15:42
• Also, I knew that `\textbackslash` was used for typesetting. However, it was the best I could come up with. – Someone May 11 '20 at 15:43
• @Someone Yeah, that's a primitive TeX syntax. Any time TeX is looking for a number, if such number starts with a ```, the next token can be either a character, or a character preceded by a backslash. In the case of `\\` you need the preceding backslash because a single backslash doesn't make a token. Note that this works: `\catcode`|=0 \catcode`\\=12 |catcode`\=3 |show\` because after the second `\catcode`, the backslash is just a character, so you don't have to prefix a backslash anymore. – Phelype Oleinik May 11 '20 at 16:41
• Does it mean that I could type `\\ and have it be a backslash? Or would it be a "open single quote and newline"? – Someone May 12 '20 at 18:17
• @Someone The latter. The special `\\ syntax only expands to `92` (the ASCII code of `\`) when TeX is looking for a number. Everywhere else it will mean open quote and `\\`. Compare the output of `(\number`\\)(`\\)`. – Phelype Oleinik May 12 '20 at 18:30