Explanation of TeX’s reading rules in TeXbookWhen can one use implicit braces instead of explicit braces?jobname, character codes and detokenizeWhat are lccode and uccode used for?Why in the discussion of the definition of newif are the following things trueQuestion about exercise 7.5 in TeXbookCan LaTeX change the behavior of core TeX commands?Why does the TeX scanner process tokens for register numbers and macro names differently?The laws of expansion (chardeffoo=<number>foo)'a^^Mb' isn't equivalent to 'a<return>b'; instead throws pdftex into an extended modeQuestion about exercise 20.7 in the TeXbook
How to project 3d image in the planes xy, xz, yz?
Why only the fundamental frequency component is said to give useful power?
At what point in time did Dumbledore ask Snape to do this thing?
How do I write "Show, Don't Tell" as a person with Asperger Syndrome?
Understanding the TeXlive release cycle: What is the meaning of a TeXlive release and is it ever 'finished'?
The eyes have it
How can drunken, homicidal elves successfully conduct a wild hunt?
Is this a mistake? (regarding maximum likelihood estimator)
How Can I Tell The Difference Between Unmarked Sugar and Stevia?
Is it a problem if <h4>, <h5> and <h6> are smaller than regular text?
Arriving at the same result with the opposite hypotheses
Can the poison from Kingsmen be concocted?
Payment instructions allegedly from HomeAway look fishy to me
How would a aircraft visually signal in distress?
Soft question: Examples where lack of mathematical rigour cause security breaches?
Is using haveibeenpwned to validate password strength rational?
Genetic limitations to learn certain instruments
Does a 3rd-level Wolf Totem barbarian get advantage against enemies when an ally is within 5 feet of the enemy?
How do governments keep track of their issued currency?
Find duplicated column value in CSV
Argon vs nitrogen for preserving wine
Words that signal future content
What's up with this leaf?
How does a transformer increase voltage while decreasing the current?
Explanation of TeX’s reading rules in TeXbook
When can one use implicit braces instead of explicit braces?jobname, character codes and detokenizeWhat are lccode and uccode used for?Why in the discussion of the definition of newif are the following things trueQuestion about exercise 7.5 in TeXbookCan LaTeX change the behavior of core TeX commands?Why does the TeX scanner process tokens for register numbers and macro names differently?The laws of expansion (chardeffoo=<number>foo)'a^^Mb' isn't equivalent to 'a<return>b'; instead throws pdftex into an extended modeQuestion about exercise 20.7 in the TeXbook
What means the following extract on page 46 of TeXbook?
TeX goes into state
S
in case (c), or in case (b) with respect to a character of category 10 (space)
Does it mean that space must be skipped in case (b)? If yes, why the following example shows contrary?
chardefx=`%
% a % case (b) - not skipped
x a % case (c) - skipped
bye
Also, does the "with respect to a character of category 10 (space)" part relate to "case (b)" only, or to both?
This is the full paragraph:
If TeX sees an escape character (category 0) in any state, it scans the entire
control sequence name as follows. (a) If there are no more characters in the
line, the name is empty (likecsnameendcsname
). Otherwise (b) if the next character
is not of category 11 (letter), the name consists of that single symbol. Otherwise (c) the
name consists of all letters beginning with the current one and ending just before the
first nonletter, or at the end of the line. This name becomes a control sequence token.
TeX goes into stateS
in case (c), or in case (b) with respect to a character of category 10
(space); otherwise TeX goes into stateM
.
tex-core plain-tex
add a comment |
What means the following extract on page 46 of TeXbook?
TeX goes into state
S
in case (c), or in case (b) with respect to a character of category 10 (space)
Does it mean that space must be skipped in case (b)? If yes, why the following example shows contrary?
chardefx=`%
% a % case (b) - not skipped
x a % case (c) - skipped
bye
Also, does the "with respect to a character of category 10 (space)" part relate to "case (b)" only, or to both?
This is the full paragraph:
If TeX sees an escape character (category 0) in any state, it scans the entire
control sequence name as follows. (a) If there are no more characters in the
line, the name is empty (likecsnameendcsname
). Otherwise (b) if the next character
is not of category 11 (letter), the name consists of that single symbol. Otherwise (c) the
name consists of all letters beginning with the current one and ending just before the
first nonletter, or at the end of the line. This name becomes a control sequence token.
TeX goes into stateS
in case (c), or in case (b) with respect to a character of category 10
(space); otherwise TeX goes into stateM
.
tex-core plain-tex
1
Spaces are not skipped for single non-letter characters (e.g.%
). However, TeX will skip spaces after
– Henri Menke
May 21 at 6:37
Note that whatever wayx
is defined (even if it is undefined), spaces would be skipped after it (assuming thatx
still has category code 12). At this stage, only the characters and their category codes are taken into account; expansion and execution take place later, when tokens have been formed.
– egreg
May 21 at 8:46
@egreg I did not understand the "still has category code 12" part.
– Igor Liferenko
May 21 at 9:15
@IgorLiferenko Sorry, typo: I meant “category code 11”.
– egreg
May 21 at 9:18
add a comment |
What means the following extract on page 46 of TeXbook?
TeX goes into state
S
in case (c), or in case (b) with respect to a character of category 10 (space)
Does it mean that space must be skipped in case (b)? If yes, why the following example shows contrary?
chardefx=`%
% a % case (b) - not skipped
x a % case (c) - skipped
bye
Also, does the "with respect to a character of category 10 (space)" part relate to "case (b)" only, or to both?
This is the full paragraph:
If TeX sees an escape character (category 0) in any state, it scans the entire
control sequence name as follows. (a) If there are no more characters in the
line, the name is empty (likecsnameendcsname
). Otherwise (b) if the next character
is not of category 11 (letter), the name consists of that single symbol. Otherwise (c) the
name consists of all letters beginning with the current one and ending just before the
first nonletter, or at the end of the line. This name becomes a control sequence token.
TeX goes into stateS
in case (c), or in case (b) with respect to a character of category 10
(space); otherwise TeX goes into stateM
.
tex-core plain-tex
What means the following extract on page 46 of TeXbook?
TeX goes into state
S
in case (c), or in case (b) with respect to a character of category 10 (space)
Does it mean that space must be skipped in case (b)? If yes, why the following example shows contrary?
chardefx=`%
% a % case (b) - not skipped
x a % case (c) - skipped
bye
Also, does the "with respect to a character of category 10 (space)" part relate to "case (b)" only, or to both?
This is the full paragraph:
If TeX sees an escape character (category 0) in any state, it scans the entire
control sequence name as follows. (a) If there are no more characters in the
line, the name is empty (likecsnameendcsname
). Otherwise (b) if the next character
is not of category 11 (letter), the name consists of that single symbol. Otherwise (c) the
name consists of all letters beginning with the current one and ending just before the
first nonletter, or at the end of the line. This name becomes a control sequence token.
TeX goes into stateS
in case (c), or in case (b) with respect to a character of category 10
(space); otherwise TeX goes into stateM
.
tex-core plain-tex
tex-core plain-tex
edited May 21 at 9:07
siracusa
5,96711733
5,96711733
asked May 21 at 6:31
Igor LiferenkoIgor Liferenko
2,309829
2,309829
1
Spaces are not skipped for single non-letter characters (e.g.%
). However, TeX will skip spaces after
– Henri Menke
May 21 at 6:37
Note that whatever wayx
is defined (even if it is undefined), spaces would be skipped after it (assuming thatx
still has category code 12). At this stage, only the characters and their category codes are taken into account; expansion and execution take place later, when tokens have been formed.
– egreg
May 21 at 8:46
@egreg I did not understand the "still has category code 12" part.
– Igor Liferenko
May 21 at 9:15
@IgorLiferenko Sorry, typo: I meant “category code 11”.
– egreg
May 21 at 9:18
add a comment |
1
Spaces are not skipped for single non-letter characters (e.g.%
). However, TeX will skip spaces after
– Henri Menke
May 21 at 6:37
Note that whatever wayx
is defined (even if it is undefined), spaces would be skipped after it (assuming thatx
still has category code 12). At this stage, only the characters and their category codes are taken into account; expansion and execution take place later, when tokens have been formed.
– egreg
May 21 at 8:46
@egreg I did not understand the "still has category code 12" part.
– Igor Liferenko
May 21 at 9:15
@IgorLiferenko Sorry, typo: I meant “category code 11”.
– egreg
May 21 at 9:18
1
1
Spaces are not skipped for single non-letter characters (e.g.
%
). However, TeX will skip spaces after
, otherwise you'd end up with two consecutive spaces.– Henri Menke
May 21 at 6:37
Spaces are not skipped for single non-letter characters (e.g.
%
). However, TeX will skip spaces after
, otherwise you'd end up with two consecutive spaces.– Henri Menke
May 21 at 6:37
Note that whatever way
x
is defined (even if it is undefined), spaces would be skipped after it (assuming that x
still has category code 12). At this stage, only the characters and their category codes are taken into account; expansion and execution take place later, when tokens have been formed.– egreg
May 21 at 8:46
Note that whatever way
x
is defined (even if it is undefined), spaces would be skipped after it (assuming that x
still has category code 12). At this stage, only the characters and their category codes are taken into account; expansion and execution take place later, when tokens have been formed.– egreg
May 21 at 8:46
@egreg I did not understand the "still has category code 12" part.
– Igor Liferenko
May 21 at 9:15
@egreg I did not understand the "still has category code 12" part.
– Igor Liferenko
May 21 at 9:15
@IgorLiferenko Sorry, typo: I meant “category code 11”.
– egreg
May 21 at 9:18
@IgorLiferenko Sorry, typo: I meant “category code 11”.
– egreg
May 21 at 9:18
add a comment |
2 Answers
2
active
oldest
votes
For a different perspective: the paragraph is an attempt to explain section 354 of the TeX program, and the part about the state is the blue rectangle below (the included sections 356 and 355 happen not to affect state
):
So what it means is that if the character immediately after the escape character is either a letter, or a space [this is what is written in the TeXbook as “case (c)” and as “case (b) with respect to a character of category 10 (space)” respectively], then TeX goes into the skip_blanks
state, else it goes into the mid_line
state.
Because of the tangled evolutionary history of TeX and The TeXbook (my understanding is that first TeX was written, then a manual was written explaining it, then TeX was completely rewritten in such a way that the manual didn't change much(!), then the manual continued to be tweaked to account for tweaks to TeX), it can sometimes be easier (IMO) to understand some aspect of TeX by just reading the code than to read the TeXbook.
Appendix: If you find the image hard to read, here is the section again, taking the code from tex.web
and reformatting it a little and putting the labels in uppercase:
@<Scan a control...@>=
begin
if loc > limit then
cur_cs := null_cs state
else
begin
START_CS:
k := loc;
cur_chr := buffer[k];
cat := cat_code(cur_chr);
incr(k);
if cat = letter then
state := skip_blanks
else if cat = spacer then
state := skip_blanks
else
state := mid_line;
if (cat = letter) and (k <= limit) then
@<Scan ahead in the buffer until finding a nonletter; if an expanded code is encountered, reduce it and |goto START_CS|; otherwise if a multiletter control sequence is found, adjust |cur_cs| and |loc|, and |goto FOUND|@>
else
@<If an expanded code is present, reduce it and |goto START_CS|@>;
cur_cs := single_base + buffer[loc];
incr(loc);
end;
FOUND:
cur_cmd := eq_type(cur_cs); cur_chr := equiv(cur_cs);
if cur_cmd >= outer_call then
check_outer_validity;
end
+1 it's a shame you didn't steal the tick earlier, I just missed a 505505 palindrome because of an unfortunate "accept" just at the wrong moment:-)
– David Carlisle
May 22 at 7:07
@DavidCarlisle Ah... I guess 506605 or some later one won't be too far off :-)
– ShreevatsaR
May 22 at 21:34
add a comment |
in case (c), or in case (b) with respect to a character of category 10 (space);
means the cases that the character after is a letter (case c) or the character after
is a space (case b (non-letter) in the case that it is a space)
So in those cases the following space is skipped,
In other cases (non-letter, non-space) then the space is not skipped.
So, a <space>
acts as case b (non letter) in that only one character is considered part of the name, but it acts like case c (letter) in that following spaces are skipped.
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f491866%2fexplanation-of-tex-s-reading-rules-in-texbook%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
For a different perspective: the paragraph is an attempt to explain section 354 of the TeX program, and the part about the state is the blue rectangle below (the included sections 356 and 355 happen not to affect state
):
So what it means is that if the character immediately after the escape character is either a letter, or a space [this is what is written in the TeXbook as “case (c)” and as “case (b) with respect to a character of category 10 (space)” respectively], then TeX goes into the skip_blanks
state, else it goes into the mid_line
state.
Because of the tangled evolutionary history of TeX and The TeXbook (my understanding is that first TeX was written, then a manual was written explaining it, then TeX was completely rewritten in such a way that the manual didn't change much(!), then the manual continued to be tweaked to account for tweaks to TeX), it can sometimes be easier (IMO) to understand some aspect of TeX by just reading the code than to read the TeXbook.
Appendix: If you find the image hard to read, here is the section again, taking the code from tex.web
and reformatting it a little and putting the labels in uppercase:
@<Scan a control...@>=
begin
if loc > limit then
cur_cs := null_cs state
else
begin
START_CS:
k := loc;
cur_chr := buffer[k];
cat := cat_code(cur_chr);
incr(k);
if cat = letter then
state := skip_blanks
else if cat = spacer then
state := skip_blanks
else
state := mid_line;
if (cat = letter) and (k <= limit) then
@<Scan ahead in the buffer until finding a nonletter; if an expanded code is encountered, reduce it and |goto START_CS|; otherwise if a multiletter control sequence is found, adjust |cur_cs| and |loc|, and |goto FOUND|@>
else
@<If an expanded code is present, reduce it and |goto START_CS|@>;
cur_cs := single_base + buffer[loc];
incr(loc);
end;
FOUND:
cur_cmd := eq_type(cur_cs); cur_chr := equiv(cur_cs);
if cur_cmd >= outer_call then
check_outer_validity;
end
+1 it's a shame you didn't steal the tick earlier, I just missed a 505505 palindrome because of an unfortunate "accept" just at the wrong moment:-)
– David Carlisle
May 22 at 7:07
@DavidCarlisle Ah... I guess 506605 or some later one won't be too far off :-)
– ShreevatsaR
May 22 at 21:34
add a comment |
For a different perspective: the paragraph is an attempt to explain section 354 of the TeX program, and the part about the state is the blue rectangle below (the included sections 356 and 355 happen not to affect state
):
So what it means is that if the character immediately after the escape character is either a letter, or a space [this is what is written in the TeXbook as “case (c)” and as “case (b) with respect to a character of category 10 (space)” respectively], then TeX goes into the skip_blanks
state, else it goes into the mid_line
state.
Because of the tangled evolutionary history of TeX and The TeXbook (my understanding is that first TeX was written, then a manual was written explaining it, then TeX was completely rewritten in such a way that the manual didn't change much(!), then the manual continued to be tweaked to account for tweaks to TeX), it can sometimes be easier (IMO) to understand some aspect of TeX by just reading the code than to read the TeXbook.
Appendix: If you find the image hard to read, here is the section again, taking the code from tex.web
and reformatting it a little and putting the labels in uppercase:
@<Scan a control...@>=
begin
if loc > limit then
cur_cs := null_cs state
else
begin
START_CS:
k := loc;
cur_chr := buffer[k];
cat := cat_code(cur_chr);
incr(k);
if cat = letter then
state := skip_blanks
else if cat = spacer then
state := skip_blanks
else
state := mid_line;
if (cat = letter) and (k <= limit) then
@<Scan ahead in the buffer until finding a nonletter; if an expanded code is encountered, reduce it and |goto START_CS|; otherwise if a multiletter control sequence is found, adjust |cur_cs| and |loc|, and |goto FOUND|@>
else
@<If an expanded code is present, reduce it and |goto START_CS|@>;
cur_cs := single_base + buffer[loc];
incr(loc);
end;
FOUND:
cur_cmd := eq_type(cur_cs); cur_chr := equiv(cur_cs);
if cur_cmd >= outer_call then
check_outer_validity;
end
+1 it's a shame you didn't steal the tick earlier, I just missed a 505505 palindrome because of an unfortunate "accept" just at the wrong moment:-)
– David Carlisle
May 22 at 7:07
@DavidCarlisle Ah... I guess 506605 or some later one won't be too far off :-)
– ShreevatsaR
May 22 at 21:34
add a comment |
For a different perspective: the paragraph is an attempt to explain section 354 of the TeX program, and the part about the state is the blue rectangle below (the included sections 356 and 355 happen not to affect state
):
So what it means is that if the character immediately after the escape character is either a letter, or a space [this is what is written in the TeXbook as “case (c)” and as “case (b) with respect to a character of category 10 (space)” respectively], then TeX goes into the skip_blanks
state, else it goes into the mid_line
state.
Because of the tangled evolutionary history of TeX and The TeXbook (my understanding is that first TeX was written, then a manual was written explaining it, then TeX was completely rewritten in such a way that the manual didn't change much(!), then the manual continued to be tweaked to account for tweaks to TeX), it can sometimes be easier (IMO) to understand some aspect of TeX by just reading the code than to read the TeXbook.
Appendix: If you find the image hard to read, here is the section again, taking the code from tex.web
and reformatting it a little and putting the labels in uppercase:
@<Scan a control...@>=
begin
if loc > limit then
cur_cs := null_cs state
else
begin
START_CS:
k := loc;
cur_chr := buffer[k];
cat := cat_code(cur_chr);
incr(k);
if cat = letter then
state := skip_blanks
else if cat = spacer then
state := skip_blanks
else
state := mid_line;
if (cat = letter) and (k <= limit) then
@<Scan ahead in the buffer until finding a nonletter; if an expanded code is encountered, reduce it and |goto START_CS|; otherwise if a multiletter control sequence is found, adjust |cur_cs| and |loc|, and |goto FOUND|@>
else
@<If an expanded code is present, reduce it and |goto START_CS|@>;
cur_cs := single_base + buffer[loc];
incr(loc);
end;
FOUND:
cur_cmd := eq_type(cur_cs); cur_chr := equiv(cur_cs);
if cur_cmd >= outer_call then
check_outer_validity;
end
For a different perspective: the paragraph is an attempt to explain section 354 of the TeX program, and the part about the state is the blue rectangle below (the included sections 356 and 355 happen not to affect state
):
So what it means is that if the character immediately after the escape character is either a letter, or a space [this is what is written in the TeXbook as “case (c)” and as “case (b) with respect to a character of category 10 (space)” respectively], then TeX goes into the skip_blanks
state, else it goes into the mid_line
state.
Because of the tangled evolutionary history of TeX and The TeXbook (my understanding is that first TeX was written, then a manual was written explaining it, then TeX was completely rewritten in such a way that the manual didn't change much(!), then the manual continued to be tweaked to account for tweaks to TeX), it can sometimes be easier (IMO) to understand some aspect of TeX by just reading the code than to read the TeXbook.
Appendix: If you find the image hard to read, here is the section again, taking the code from tex.web
and reformatting it a little and putting the labels in uppercase:
@<Scan a control...@>=
begin
if loc > limit then
cur_cs := null_cs state
else
begin
START_CS:
k := loc;
cur_chr := buffer[k];
cat := cat_code(cur_chr);
incr(k);
if cat = letter then
state := skip_blanks
else if cat = spacer then
state := skip_blanks
else
state := mid_line;
if (cat = letter) and (k <= limit) then
@<Scan ahead in the buffer until finding a nonletter; if an expanded code is encountered, reduce it and |goto START_CS|; otherwise if a multiletter control sequence is found, adjust |cur_cs| and |loc|, and |goto FOUND|@>
else
@<If an expanded code is present, reduce it and |goto START_CS|@>;
cur_cs := single_base + buffer[loc];
incr(loc);
end;
FOUND:
cur_cmd := eq_type(cur_cs); cur_chr := equiv(cur_cs);
if cur_cmd >= outer_call then
check_outer_validity;
end
edited May 21 at 19:07
answered May 21 at 18:33
ShreevatsaRShreevatsaR
28.6k873104
28.6k873104
+1 it's a shame you didn't steal the tick earlier, I just missed a 505505 palindrome because of an unfortunate "accept" just at the wrong moment:-)
– David Carlisle
May 22 at 7:07
@DavidCarlisle Ah... I guess 506605 or some later one won't be too far off :-)
– ShreevatsaR
May 22 at 21:34
add a comment |
+1 it's a shame you didn't steal the tick earlier, I just missed a 505505 palindrome because of an unfortunate "accept" just at the wrong moment:-)
– David Carlisle
May 22 at 7:07
@DavidCarlisle Ah... I guess 506605 or some later one won't be too far off :-)
– ShreevatsaR
May 22 at 21:34
+1 it's a shame you didn't steal the tick earlier, I just missed a 505505 palindrome because of an unfortunate "accept" just at the wrong moment:-)
– David Carlisle
May 22 at 7:07
+1 it's a shame you didn't steal the tick earlier, I just missed a 505505 palindrome because of an unfortunate "accept" just at the wrong moment:-)
– David Carlisle
May 22 at 7:07
@DavidCarlisle Ah... I guess 506605 or some later one won't be too far off :-)
– ShreevatsaR
May 22 at 21:34
@DavidCarlisle Ah... I guess 506605 or some later one won't be too far off :-)
– ShreevatsaR
May 22 at 21:34
add a comment |
in case (c), or in case (b) with respect to a character of category 10 (space);
means the cases that the character after is a letter (case c) or the character after
is a space (case b (non-letter) in the case that it is a space)
So in those cases the following space is skipped,
In other cases (non-letter, non-space) then the space is not skipped.
So, a <space>
acts as case b (non letter) in that only one character is considered part of the name, but it acts like case c (letter) in that following spaces are skipped.
add a comment |
in case (c), or in case (b) with respect to a character of category 10 (space);
means the cases that the character after is a letter (case c) or the character after
is a space (case b (non-letter) in the case that it is a space)
So in those cases the following space is skipped,
In other cases (non-letter, non-space) then the space is not skipped.
So, a <space>
acts as case b (non letter) in that only one character is considered part of the name, but it acts like case c (letter) in that following spaces are skipped.
add a comment |
in case (c), or in case (b) with respect to a character of category 10 (space);
means the cases that the character after is a letter (case c) or the character after
is a space (case b (non-letter) in the case that it is a space)
So in those cases the following space is skipped,
In other cases (non-letter, non-space) then the space is not skipped.
So, a <space>
acts as case b (non letter) in that only one character is considered part of the name, but it acts like case c (letter) in that following spaces are skipped.
in case (c), or in case (b) with respect to a character of category 10 (space);
means the cases that the character after is a letter (case c) or the character after
is a space (case b (non-letter) in the case that it is a space)
So in those cases the following space is skipped,
In other cases (non-letter, non-space) then the space is not skipped.
So, a <space>
acts as case b (non letter) in that only one character is considered part of the name, but it acts like case c (letter) in that following spaces are skipped.
edited May 21 at 7:54
answered May 21 at 7:02
David CarlisleDavid Carlisle
508k4311551908
508k4311551908
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f491866%2fexplanation-of-tex-s-reading-rules-in-texbook%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
1
Spaces are not skipped for single non-letter characters (e.g.
%
). However, TeX will skip spaces after– Henri Menke
May 21 at 6:37
Note that whatever way
x
is defined (even if it is undefined), spaces would be skipped after it (assuming thatx
still has category code 12). At this stage, only the characters and their category codes are taken into account; expansion and execution take place later, when tokens have been formed.– egreg
May 21 at 8:46
@egreg I did not understand the "still has category code 12" part.
– Igor Liferenko
May 21 at 9:15
@IgorLiferenko Sorry, typo: I meant “category code 11”.
– egreg
May 21 at 9:18