Misplaced omit in table and {} at the end of a command
up vote
1
down vote
favorite
The following LaTeX document does not compile.
documentclass{article}
usepackage{booktabs}
usepackage{ltablex}
usepackage{multirow}
usepackage{lipsum}
begin{document}
noindent{}
begin{tabularx}{linewidth}{Xl}
bottomrule{}%
multicolumn{2}{c}{TESTING}\*midrule{}%
textbf{Left} & textbf{Right}\*toprule{}%
endfirsthead{}%
%
toprule{}%
multicolumn{2}{c}{emph{continuing}}\*midrule{}%
textbf{Left} & textbf{Right}\*bottomrule{}%
endhead{}%
%
lipsum[1][1-2] & first \midrule{}%
lipsum[2][1-2] & second \midrule{}%
lipsum[3][1-2] & third \midrule{}%
lipsum[4][1-2] & third \bottomrule{}%
end{tabularx}
end{document}
pdflatex is giving the error message:
! Misplaced omit.
multispan ->omit
@multispan
l.26 end{tabularx}
I have observed that if {}%
is removed from the source, it compiles.
What is the explanation for this behaviour?
The real document I am working with is generated by a Haskell program using the HaTeX library, which uses to append {}
to commands with no arguments.
tables macros
|
show 1 more comment
up vote
1
down vote
favorite
The following LaTeX document does not compile.
documentclass{article}
usepackage{booktabs}
usepackage{ltablex}
usepackage{multirow}
usepackage{lipsum}
begin{document}
noindent{}
begin{tabularx}{linewidth}{Xl}
bottomrule{}%
multicolumn{2}{c}{TESTING}\*midrule{}%
textbf{Left} & textbf{Right}\*toprule{}%
endfirsthead{}%
%
toprule{}%
multicolumn{2}{c}{emph{continuing}}\*midrule{}%
textbf{Left} & textbf{Right}\*bottomrule{}%
endhead{}%
%
lipsum[1][1-2] & first \midrule{}%
lipsum[2][1-2] & second \midrule{}%
lipsum[3][1-2] & third \midrule{}%
lipsum[4][1-2] & third \bottomrule{}%
end{tabularx}
end{document}
pdflatex is giving the error message:
! Misplaced omit.
multispan ->omit
@multispan
l.26 end{tabularx}
I have observed that if {}%
is removed from the source, it compiles.
What is the explanation for this behaviour?
The real document I am working with is generated by a Haskell program using the HaTeX library, which uses to append {}
to commands with no arguments.
tables macros
3
omit
must be the first token in a cell (probably after some expansions). Since{}
is not expandable,omit
is no longer the first token in that cell, hence the error about a misplacedomit
.multicolumn
expands to something withmultispan
as its first token andmultispan
expands toomit@multispan
, so after two steps of expansion,multicolumn
is turned into something withomit
as the first token.
– Skillmon
Dec 7 at 13:35
2
Well, the Haskell program does wrong. The culprits are precisely those wrong{}
tokens.
– egreg
Dec 7 at 13:40
1
Argumentless commands that produce text are in most occasions best followed by{}
. Those that don't produce text should not have{}
after them, but a simple space.
– egreg
Dec 7 at 14:01
1
In almost all cases, spaces are removed after all command names, i.e. control sequences that are built of a backslash followed by letters. Note that control characters like \, > etc. don't discard the following space(s).
– siracusa
Dec 7 at 16:34
1
@Romildo Yes, it's safe for commands whose name consists of letters. The only problem is if the command generates text. But it's quite rare and you Haskell program should not take that case as the general one. Commands to be protected that way can be added as exceptions.
– egreg
Dec 7 at 23:38
|
show 1 more comment
up vote
1
down vote
favorite
up vote
1
down vote
favorite
The following LaTeX document does not compile.
documentclass{article}
usepackage{booktabs}
usepackage{ltablex}
usepackage{multirow}
usepackage{lipsum}
begin{document}
noindent{}
begin{tabularx}{linewidth}{Xl}
bottomrule{}%
multicolumn{2}{c}{TESTING}\*midrule{}%
textbf{Left} & textbf{Right}\*toprule{}%
endfirsthead{}%
%
toprule{}%
multicolumn{2}{c}{emph{continuing}}\*midrule{}%
textbf{Left} & textbf{Right}\*bottomrule{}%
endhead{}%
%
lipsum[1][1-2] & first \midrule{}%
lipsum[2][1-2] & second \midrule{}%
lipsum[3][1-2] & third \midrule{}%
lipsum[4][1-2] & third \bottomrule{}%
end{tabularx}
end{document}
pdflatex is giving the error message:
! Misplaced omit.
multispan ->omit
@multispan
l.26 end{tabularx}
I have observed that if {}%
is removed from the source, it compiles.
What is the explanation for this behaviour?
The real document I am working with is generated by a Haskell program using the HaTeX library, which uses to append {}
to commands with no arguments.
tables macros
The following LaTeX document does not compile.
documentclass{article}
usepackage{booktabs}
usepackage{ltablex}
usepackage{multirow}
usepackage{lipsum}
begin{document}
noindent{}
begin{tabularx}{linewidth}{Xl}
bottomrule{}%
multicolumn{2}{c}{TESTING}\*midrule{}%
textbf{Left} & textbf{Right}\*toprule{}%
endfirsthead{}%
%
toprule{}%
multicolumn{2}{c}{emph{continuing}}\*midrule{}%
textbf{Left} & textbf{Right}\*bottomrule{}%
endhead{}%
%
lipsum[1][1-2] & first \midrule{}%
lipsum[2][1-2] & second \midrule{}%
lipsum[3][1-2] & third \midrule{}%
lipsum[4][1-2] & third \bottomrule{}%
end{tabularx}
end{document}
pdflatex is giving the error message:
! Misplaced omit.
multispan ->omit
@multispan
l.26 end{tabularx}
I have observed that if {}%
is removed from the source, it compiles.
What is the explanation for this behaviour?
The real document I am working with is generated by a Haskell program using the HaTeX library, which uses to append {}
to commands with no arguments.
tables macros
tables macros
asked Dec 7 at 13:28
Romildo
1,84832545
1,84832545
3
omit
must be the first token in a cell (probably after some expansions). Since{}
is not expandable,omit
is no longer the first token in that cell, hence the error about a misplacedomit
.multicolumn
expands to something withmultispan
as its first token andmultispan
expands toomit@multispan
, so after two steps of expansion,multicolumn
is turned into something withomit
as the first token.
– Skillmon
Dec 7 at 13:35
2
Well, the Haskell program does wrong. The culprits are precisely those wrong{}
tokens.
– egreg
Dec 7 at 13:40
1
Argumentless commands that produce text are in most occasions best followed by{}
. Those that don't produce text should not have{}
after them, but a simple space.
– egreg
Dec 7 at 14:01
1
In almost all cases, spaces are removed after all command names, i.e. control sequences that are built of a backslash followed by letters. Note that control characters like \, > etc. don't discard the following space(s).
– siracusa
Dec 7 at 16:34
1
@Romildo Yes, it's safe for commands whose name consists of letters. The only problem is if the command generates text. But it's quite rare and you Haskell program should not take that case as the general one. Commands to be protected that way can be added as exceptions.
– egreg
Dec 7 at 23:38
|
show 1 more comment
3
omit
must be the first token in a cell (probably after some expansions). Since{}
is not expandable,omit
is no longer the first token in that cell, hence the error about a misplacedomit
.multicolumn
expands to something withmultispan
as its first token andmultispan
expands toomit@multispan
, so after two steps of expansion,multicolumn
is turned into something withomit
as the first token.
– Skillmon
Dec 7 at 13:35
2
Well, the Haskell program does wrong. The culprits are precisely those wrong{}
tokens.
– egreg
Dec 7 at 13:40
1
Argumentless commands that produce text are in most occasions best followed by{}
. Those that don't produce text should not have{}
after them, but a simple space.
– egreg
Dec 7 at 14:01
1
In almost all cases, spaces are removed after all command names, i.e. control sequences that are built of a backslash followed by letters. Note that control characters like \, > etc. don't discard the following space(s).
– siracusa
Dec 7 at 16:34
1
@Romildo Yes, it's safe for commands whose name consists of letters. The only problem is if the command generates text. But it's quite rare and you Haskell program should not take that case as the general one. Commands to be protected that way can be added as exceptions.
– egreg
Dec 7 at 23:38
3
3
omit
must be the first token in a cell (probably after some expansions). Since {}
is not expandable, omit
is no longer the first token in that cell, hence the error about a misplaced omit
. multicolumn
expands to something with multispan
as its first token and multispan
expands to omit@multispan
, so after two steps of expansion, multicolumn
is turned into something with omit
as the first token.– Skillmon
Dec 7 at 13:35
omit
must be the first token in a cell (probably after some expansions). Since {}
is not expandable, omit
is no longer the first token in that cell, hence the error about a misplaced omit
. multicolumn
expands to something with multispan
as its first token and multispan
expands to omit@multispan
, so after two steps of expansion, multicolumn
is turned into something with omit
as the first token.– Skillmon
Dec 7 at 13:35
2
2
Well, the Haskell program does wrong. The culprits are precisely those wrong
{}
tokens.– egreg
Dec 7 at 13:40
Well, the Haskell program does wrong. The culprits are precisely those wrong
{}
tokens.– egreg
Dec 7 at 13:40
1
1
Argumentless commands that produce text are in most occasions best followed by
{}
. Those that don't produce text should not have {}
after them, but a simple space.– egreg
Dec 7 at 14:01
Argumentless commands that produce text are in most occasions best followed by
{}
. Those that don't produce text should not have {}
after them, but a simple space.– egreg
Dec 7 at 14:01
1
1
In almost all cases, spaces are removed after all command names, i.e. control sequences that are built of a backslash followed by letters. Note that control characters like \, > etc. don't discard the following space(s).
– siracusa
Dec 7 at 16:34
In almost all cases, spaces are removed after all command names, i.e. control sequences that are built of a backslash followed by letters. Note that control characters like \, > etc. don't discard the following space(s).
– siracusa
Dec 7 at 16:34
1
1
@Romildo Yes, it's safe for commands whose name consists of letters. The only problem is if the command generates text. But it's quite rare and you Haskell program should not take that case as the general one. Commands to be protected that way can be added as exceptions.
– egreg
Dec 7 at 23:38
@Romildo Yes, it's safe for commands whose name consists of letters. The only problem is if the command generates text. But it's quite rare and you Haskell program should not take that case as the general one. Commands to be protected that way can be added as exceptions.
– egreg
Dec 7 at 23:38
|
show 1 more comment
1 Answer
1
active
oldest
votes
up vote
3
down vote
The {}
after noindent
does not generate a TeX error, but the newline after it forces bad output, as the paragraph has been started prematurely the newline generates a non-discarded space at the start of the paragraph, which looks a bit like indentation but is not indented by a fixed parindent
it is a word space.
Compare the two paragraphs:
documentclass{article}
begin{document}
noindent
AAA
noindent{}
AAA
end{document}
multicolumn
must be first the command (after expansion) in its cell, any non expandable tokens will cause multicolumn
to generate an error, as it is too late to change the cell template.
So the example could be simplified to
documentclass{article}
begin{document}
begin{tabular}{c}
a\
{}multicolumn{1}{l}{x}
end{tabular}
end{document}
which generates
! Misplaced omit.
multispan ->omit
@multispan
l.8 {}multicolumn{1}{l}{x}
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',
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%2f463694%2fmisplaced-omit-in-table-and-at-the-end-of-a-command%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
up vote
3
down vote
The {}
after noindent
does not generate a TeX error, but the newline after it forces bad output, as the paragraph has been started prematurely the newline generates a non-discarded space at the start of the paragraph, which looks a bit like indentation but is not indented by a fixed parindent
it is a word space.
Compare the two paragraphs:
documentclass{article}
begin{document}
noindent
AAA
noindent{}
AAA
end{document}
multicolumn
must be first the command (after expansion) in its cell, any non expandable tokens will cause multicolumn
to generate an error, as it is too late to change the cell template.
So the example could be simplified to
documentclass{article}
begin{document}
begin{tabular}{c}
a\
{}multicolumn{1}{l}{x}
end{tabular}
end{document}
which generates
! Misplaced omit.
multispan ->omit
@multispan
l.8 {}multicolumn{1}{l}{x}
add a comment |
up vote
3
down vote
The {}
after noindent
does not generate a TeX error, but the newline after it forces bad output, as the paragraph has been started prematurely the newline generates a non-discarded space at the start of the paragraph, which looks a bit like indentation but is not indented by a fixed parindent
it is a word space.
Compare the two paragraphs:
documentclass{article}
begin{document}
noindent
AAA
noindent{}
AAA
end{document}
multicolumn
must be first the command (after expansion) in its cell, any non expandable tokens will cause multicolumn
to generate an error, as it is too late to change the cell template.
So the example could be simplified to
documentclass{article}
begin{document}
begin{tabular}{c}
a\
{}multicolumn{1}{l}{x}
end{tabular}
end{document}
which generates
! Misplaced omit.
multispan ->omit
@multispan
l.8 {}multicolumn{1}{l}{x}
add a comment |
up vote
3
down vote
up vote
3
down vote
The {}
after noindent
does not generate a TeX error, but the newline after it forces bad output, as the paragraph has been started prematurely the newline generates a non-discarded space at the start of the paragraph, which looks a bit like indentation but is not indented by a fixed parindent
it is a word space.
Compare the two paragraphs:
documentclass{article}
begin{document}
noindent
AAA
noindent{}
AAA
end{document}
multicolumn
must be first the command (after expansion) in its cell, any non expandable tokens will cause multicolumn
to generate an error, as it is too late to change the cell template.
So the example could be simplified to
documentclass{article}
begin{document}
begin{tabular}{c}
a\
{}multicolumn{1}{l}{x}
end{tabular}
end{document}
which generates
! Misplaced omit.
multispan ->omit
@multispan
l.8 {}multicolumn{1}{l}{x}
The {}
after noindent
does not generate a TeX error, but the newline after it forces bad output, as the paragraph has been started prematurely the newline generates a non-discarded space at the start of the paragraph, which looks a bit like indentation but is not indented by a fixed parindent
it is a word space.
Compare the two paragraphs:
documentclass{article}
begin{document}
noindent
AAA
noindent{}
AAA
end{document}
multicolumn
must be first the command (after expansion) in its cell, any non expandable tokens will cause multicolumn
to generate an error, as it is too late to change the cell template.
So the example could be simplified to
documentclass{article}
begin{document}
begin{tabular}{c}
a\
{}multicolumn{1}{l}{x}
end{tabular}
end{document}
which generates
! Misplaced omit.
multispan ->omit
@multispan
l.8 {}multicolumn{1}{l}{x}
answered Dec 7 at 22:38
David Carlisle
480k3811121848
480k3811121848
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f463694%2fmisplaced-omit-in-table-and-at-the-end-of-a-command%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
3
omit
must be the first token in a cell (probably after some expansions). Since{}
is not expandable,omit
is no longer the first token in that cell, hence the error about a misplacedomit
.multicolumn
expands to something withmultispan
as its first token andmultispan
expands toomit@multispan
, so after two steps of expansion,multicolumn
is turned into something withomit
as the first token.– Skillmon
Dec 7 at 13:35
2
Well, the Haskell program does wrong. The culprits are precisely those wrong
{}
tokens.– egreg
Dec 7 at 13:40
1
Argumentless commands that produce text are in most occasions best followed by
{}
. Those that don't produce text should not have{}
after them, but a simple space.– egreg
Dec 7 at 14:01
1
In almost all cases, spaces are removed after all command names, i.e. control sequences that are built of a backslash followed by letters. Note that control characters like \, > etc. don't discard the following space(s).
– siracusa
Dec 7 at 16:34
1
@Romildo Yes, it's safe for commands whose name consists of letters. The only problem is if the command generates text. But it's quite rare and you Haskell program should not take that case as the general one. Commands to be protected that way can be added as exceptions.
– egreg
Dec 7 at 23:38