LaTeX newcommand limitation
Clash Royale CLAN TAG#URR8PPP
up vote
1
down vote
favorite
I want to know the possibilities and the limitation of LaTeX's newcommand
regarding the definition and the use/call of new macros. I know some of these examples are primitive but they can help to understand the limitations.
I am only interested in basic newcommand
s with ""char+ as name.
Invalid examples:
newcommandnewcentercenter
beginnewcenter
endcenter
newcommandtabularthreetabular
begin tabularthree ccc
cell& cell
end tabularthree
newcommandtiontion
sectionmysec
Valid examples:
newcommandoptarg[myoptarg]
sectionoptargmysec
newcommandcccc
newcommandmybeginbegin
mybegintabularccc
cell& cell
endtabular
newcommandtabulartwotabular
begintabulartwo ccc
cell& cell
end tabulartwo
newcommandtabularfourtabular
begin tabularfourccc
cell& cell
end tabularfour
macros latex-base
New contributor
add a comment |Â
up vote
1
down vote
favorite
I want to know the possibilities and the limitation of LaTeX's newcommand
regarding the definition and the use/call of new macros. I know some of these examples are primitive but they can help to understand the limitations.
I am only interested in basic newcommand
s with ""char+ as name.
Invalid examples:
newcommandnewcentercenter
beginnewcenter
endcenter
newcommandtabularthreetabular
begin tabularthree ccc
cell& cell
end tabularthree
newcommandtiontion
sectionmysec
Valid examples:
newcommandoptarg[myoptarg]
sectionoptargmysec
newcommandcccc
newcommandmybeginbegin
mybegintabularccc
cell& cell
endtabular
newcommandtabulartwotabular
begintabulartwo ccc
cell& cell
end tabulartwo
newcommandtabularfourtabular
begin tabularfourccc
cell& cell
end tabularfour
macros latex-base
New contributor
I don't really see what the use-case would be other than unreadable and unmaintainable document source code.
â Henri Menke
4 hours ago
These don't so much look like limitations ofnewcommand
but an issue of understanding LaTeX (and TeX)'s command expansion rules.
â A.Ellett
4 hours ago
these are not really related tonewcommand
but to the use of the macros, you would get the same errors if the macros were defined by the primitivedef
â David Carlisle
4 hours ago
add a comment |Â
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I want to know the possibilities and the limitation of LaTeX's newcommand
regarding the definition and the use/call of new macros. I know some of these examples are primitive but they can help to understand the limitations.
I am only interested in basic newcommand
s with ""char+ as name.
Invalid examples:
newcommandnewcentercenter
beginnewcenter
endcenter
newcommandtabularthreetabular
begin tabularthree ccc
cell& cell
end tabularthree
newcommandtiontion
sectionmysec
Valid examples:
newcommandoptarg[myoptarg]
sectionoptargmysec
newcommandcccc
newcommandmybeginbegin
mybegintabularccc
cell& cell
endtabular
newcommandtabulartwotabular
begintabulartwo ccc
cell& cell
end tabulartwo
newcommandtabularfourtabular
begin tabularfourccc
cell& cell
end tabularfour
macros latex-base
New contributor
I want to know the possibilities and the limitation of LaTeX's newcommand
regarding the definition and the use/call of new macros. I know some of these examples are primitive but they can help to understand the limitations.
I am only interested in basic newcommand
s with ""char+ as name.
Invalid examples:
newcommandnewcentercenter
beginnewcenter
endcenter
newcommandtabularthreetabular
begin tabularthree ccc
cell& cell
end tabularthree
newcommandtiontion
sectionmysec
Valid examples:
newcommandoptarg[myoptarg]
sectionoptargmysec
newcommandcccc
newcommandmybeginbegin
mybegintabularccc
cell& cell
endtabular
newcommandtabulartwotabular
begintabulartwo ccc
cell& cell
end tabulartwo
newcommandtabularfourtabular
begin tabularfourccc
cell& cell
end tabularfour
macros latex-base
macros latex-base
New contributor
New contributor
edited 24 mins ago
Phelype Oleinik
17k43769
17k43769
New contributor
asked 4 hours ago
Bighted19
62
62
New contributor
New contributor
I don't really see what the use-case would be other than unreadable and unmaintainable document source code.
â Henri Menke
4 hours ago
These don't so much look like limitations ofnewcommand
but an issue of understanding LaTeX (and TeX)'s command expansion rules.
â A.Ellett
4 hours ago
these are not really related tonewcommand
but to the use of the macros, you would get the same errors if the macros were defined by the primitivedef
â David Carlisle
4 hours ago
add a comment |Â
I don't really see what the use-case would be other than unreadable and unmaintainable document source code.
â Henri Menke
4 hours ago
These don't so much look like limitations ofnewcommand
but an issue of understanding LaTeX (and TeX)'s command expansion rules.
â A.Ellett
4 hours ago
these are not really related tonewcommand
but to the use of the macros, you would get the same errors if the macros were defined by the primitivedef
â David Carlisle
4 hours ago
I don't really see what the use-case would be other than unreadable and unmaintainable document source code.
â Henri Menke
4 hours ago
I don't really see what the use-case would be other than unreadable and unmaintainable document source code.
â Henri Menke
4 hours ago
These don't so much look like limitations of
newcommand
but an issue of understanding LaTeX (and TeX)'s command expansion rules.â A.Ellett
4 hours ago
These don't so much look like limitations of
newcommand
but an issue of understanding LaTeX (and TeX)'s command expansion rules.â A.Ellett
4 hours ago
these are not really related to
newcommand
but to the use of the macros, you would get the same errors if the macros were defined by the primitive def
â David Carlisle
4 hours ago
these are not really related to
newcommand
but to the use of the macros, you would get the same errors if the macros were defined by the primitive def
â David Carlisle
4 hours ago
add a comment |Â
2 Answers
2
active
oldest
votes
up vote
3
down vote
expandafter
solves almost all your problems. You seem to be a LaTeX beginner, so these are not things you should usually have to do. Please also have a look at When to use edef, noexpand, and expandafter?
documentclassarticle
begindocument
newcommandnewcentercenter
expandafterbeginexpandafternewcenter
endcenter
newcommandtabularthreetabular
expandafterbegintabularthreeccc
cell& cell
expandafterendtabularthree
newcommandtiontion
csname sectionendcsnamemysec
enddocument
You beat me to the punch. Your answer is almost verbatim my answer. lol.
â A.Ellett
4 hours ago
add a comment |Â
up vote
2
down vote
Henri Menke told you how to work around the rules. This answer will show you why the syntax you used (doesn't) work.
The ones that don't work:
newcommandnewcentercenter
beginnewcenter
endcenter
This one fails because @currenvir
expands to newcenter
and when LaTeX calls the @checkend
command, it compares the meaning of @currenvir
and the argument to end
, which is center
. The comparison fails because it compares newcenter
with center
without further expasion, so they differ and an error is raised. The error message, on the other hand, fully expands @currenvir
and the error message is misleading:
! LaTeX Error: begincenter on input line 29 ended by endcenter.
newcommandtabularthreetabular
begin tabularthree ccc
cell& cell
end tabularthree
This one fails because LaTeX checks if the enfironment exists with ifcsname
which will build a command with the argument to begin
which, in this case, is tabularthree
, which expands to tabular
. The ifcsname
then checks for a command named tabular
, which doesn't exist and LaTeX tells you:
! LaTeX Error: Environment tabular undefined.
newcommandtiontion
sectionmysec
This one fails because it's invalid. The command sec
is expanded, and it is the secant function, which is only allowed in math-mode, so TeX thinks you forgot a $
:
! Missing $ inserted.
<inserted text>
$
l.46 sec
If sec
wasn't a math-mode command, TeX would try to execute it. If it had an argument, the argument would be the command tion
, which then expands to tion
and then the sec
command would do its thing (whatever it happened to be) with tion
. If it didn't exist, TeX would complain that sec
doesn't exist.
The one that works:
newcommandoptarg[myoptarg]
sectionoptargmysec
This one compiles, but it doesn't produce what you'd expect. The test for the optional argument fails, because the code for section
doesn't see a [
character (and it doesn't expand optarg
looking for it), so it takes optarg
as the mandatory argument and the title of the section becomes [myoptarg]
and mysec
is written below.
The ones that do work:
newcommandcccc
newcommandmybeginbegin
mybegintabularccc
cell& cell
endtabular
This one works because when TeX expands mybegin
it just finds begin
. TeX then proceeds expanding begin
and doing things normally. The cc
thing works because tabular
expands the tokens of the alignment preamble.
newcommandtabulartwotabular
begintabulartwo ccc
cell& cell
end tabulartwo
This one works by the same reason that the first case didn't. The check for the environment name is performed for tabulartwo
and tabulartwo
, which are the same thing. And the braces there don't make a difference because by TeX's argument grabbing rules, a normal argument is either a single token (tabulartwo
is a single token) or, if a open brace ({
) is found, then the argument is the <balanced text>
within that pair of braces (tabulartwo
and tabular
are <balanced text>
within a pair of braces).
newcommandtabularfourtabular
begin tabularfourccc
cell& cell
end tabularfour
Same as above.
But you really shouldn't be inventing syntax for commands, because even if it works, you will obfuscate your code and not even you will understand it in a few weeks.
1
On the other hand,begintabularccc
will not work if thearray
package is loaded.
â egreg
4 hours ago
add a comment |Â
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
3
down vote
expandafter
solves almost all your problems. You seem to be a LaTeX beginner, so these are not things you should usually have to do. Please also have a look at When to use edef, noexpand, and expandafter?
documentclassarticle
begindocument
newcommandnewcentercenter
expandafterbeginexpandafternewcenter
endcenter
newcommandtabularthreetabular
expandafterbegintabularthreeccc
cell& cell
expandafterendtabularthree
newcommandtiontion
csname sectionendcsnamemysec
enddocument
You beat me to the punch. Your answer is almost verbatim my answer. lol.
â A.Ellett
4 hours ago
add a comment |Â
up vote
3
down vote
expandafter
solves almost all your problems. You seem to be a LaTeX beginner, so these are not things you should usually have to do. Please also have a look at When to use edef, noexpand, and expandafter?
documentclassarticle
begindocument
newcommandnewcentercenter
expandafterbeginexpandafternewcenter
endcenter
newcommandtabularthreetabular
expandafterbegintabularthreeccc
cell& cell
expandafterendtabularthree
newcommandtiontion
csname sectionendcsnamemysec
enddocument
You beat me to the punch. Your answer is almost verbatim my answer. lol.
â A.Ellett
4 hours ago
add a comment |Â
up vote
3
down vote
up vote
3
down vote
expandafter
solves almost all your problems. You seem to be a LaTeX beginner, so these are not things you should usually have to do. Please also have a look at When to use edef, noexpand, and expandafter?
documentclassarticle
begindocument
newcommandnewcentercenter
expandafterbeginexpandafternewcenter
endcenter
newcommandtabularthreetabular
expandafterbegintabularthreeccc
cell& cell
expandafterendtabularthree
newcommandtiontion
csname sectionendcsnamemysec
enddocument
expandafter
solves almost all your problems. You seem to be a LaTeX beginner, so these are not things you should usually have to do. Please also have a look at When to use edef, noexpand, and expandafter?
documentclassarticle
begindocument
newcommandnewcentercenter
expandafterbeginexpandafternewcenter
endcenter
newcommandtabularthreetabular
expandafterbegintabularthreeccc
cell& cell
expandafterendtabularthree
newcommandtiontion
csname sectionendcsnamemysec
enddocument
answered 4 hours ago
Henri Menke
64.8k7144253
64.8k7144253
You beat me to the punch. Your answer is almost verbatim my answer. lol.
â A.Ellett
4 hours ago
add a comment |Â
You beat me to the punch. Your answer is almost verbatim my answer. lol.
â A.Ellett
4 hours ago
You beat me to the punch. Your answer is almost verbatim my answer. lol.
â A.Ellett
4 hours ago
You beat me to the punch. Your answer is almost verbatim my answer. lol.
â A.Ellett
4 hours ago
add a comment |Â
up vote
2
down vote
Henri Menke told you how to work around the rules. This answer will show you why the syntax you used (doesn't) work.
The ones that don't work:
newcommandnewcentercenter
beginnewcenter
endcenter
This one fails because @currenvir
expands to newcenter
and when LaTeX calls the @checkend
command, it compares the meaning of @currenvir
and the argument to end
, which is center
. The comparison fails because it compares newcenter
with center
without further expasion, so they differ and an error is raised. The error message, on the other hand, fully expands @currenvir
and the error message is misleading:
! LaTeX Error: begincenter on input line 29 ended by endcenter.
newcommandtabularthreetabular
begin tabularthree ccc
cell& cell
end tabularthree
This one fails because LaTeX checks if the enfironment exists with ifcsname
which will build a command with the argument to begin
which, in this case, is tabularthree
, which expands to tabular
. The ifcsname
then checks for a command named tabular
, which doesn't exist and LaTeX tells you:
! LaTeX Error: Environment tabular undefined.
newcommandtiontion
sectionmysec
This one fails because it's invalid. The command sec
is expanded, and it is the secant function, which is only allowed in math-mode, so TeX thinks you forgot a $
:
! Missing $ inserted.
<inserted text>
$
l.46 sec
If sec
wasn't a math-mode command, TeX would try to execute it. If it had an argument, the argument would be the command tion
, which then expands to tion
and then the sec
command would do its thing (whatever it happened to be) with tion
. If it didn't exist, TeX would complain that sec
doesn't exist.
The one that works:
newcommandoptarg[myoptarg]
sectionoptargmysec
This one compiles, but it doesn't produce what you'd expect. The test for the optional argument fails, because the code for section
doesn't see a [
character (and it doesn't expand optarg
looking for it), so it takes optarg
as the mandatory argument and the title of the section becomes [myoptarg]
and mysec
is written below.
The ones that do work:
newcommandcccc
newcommandmybeginbegin
mybegintabularccc
cell& cell
endtabular
This one works because when TeX expands mybegin
it just finds begin
. TeX then proceeds expanding begin
and doing things normally. The cc
thing works because tabular
expands the tokens of the alignment preamble.
newcommandtabulartwotabular
begintabulartwo ccc
cell& cell
end tabulartwo
This one works by the same reason that the first case didn't. The check for the environment name is performed for tabulartwo
and tabulartwo
, which are the same thing. And the braces there don't make a difference because by TeX's argument grabbing rules, a normal argument is either a single token (tabulartwo
is a single token) or, if a open brace ({
) is found, then the argument is the <balanced text>
within that pair of braces (tabulartwo
and tabular
are <balanced text>
within a pair of braces).
newcommandtabularfourtabular
begin tabularfourccc
cell& cell
end tabularfour
Same as above.
But you really shouldn't be inventing syntax for commands, because even if it works, you will obfuscate your code and not even you will understand it in a few weeks.
1
On the other hand,begintabularccc
will not work if thearray
package is loaded.
â egreg
4 hours ago
add a comment |Â
up vote
2
down vote
Henri Menke told you how to work around the rules. This answer will show you why the syntax you used (doesn't) work.
The ones that don't work:
newcommandnewcentercenter
beginnewcenter
endcenter
This one fails because @currenvir
expands to newcenter
and when LaTeX calls the @checkend
command, it compares the meaning of @currenvir
and the argument to end
, which is center
. The comparison fails because it compares newcenter
with center
without further expasion, so they differ and an error is raised. The error message, on the other hand, fully expands @currenvir
and the error message is misleading:
! LaTeX Error: begincenter on input line 29 ended by endcenter.
newcommandtabularthreetabular
begin tabularthree ccc
cell& cell
end tabularthree
This one fails because LaTeX checks if the enfironment exists with ifcsname
which will build a command with the argument to begin
which, in this case, is tabularthree
, which expands to tabular
. The ifcsname
then checks for a command named tabular
, which doesn't exist and LaTeX tells you:
! LaTeX Error: Environment tabular undefined.
newcommandtiontion
sectionmysec
This one fails because it's invalid. The command sec
is expanded, and it is the secant function, which is only allowed in math-mode, so TeX thinks you forgot a $
:
! Missing $ inserted.
<inserted text>
$
l.46 sec
If sec
wasn't a math-mode command, TeX would try to execute it. If it had an argument, the argument would be the command tion
, which then expands to tion
and then the sec
command would do its thing (whatever it happened to be) with tion
. If it didn't exist, TeX would complain that sec
doesn't exist.
The one that works:
newcommandoptarg[myoptarg]
sectionoptargmysec
This one compiles, but it doesn't produce what you'd expect. The test for the optional argument fails, because the code for section
doesn't see a [
character (and it doesn't expand optarg
looking for it), so it takes optarg
as the mandatory argument and the title of the section becomes [myoptarg]
and mysec
is written below.
The ones that do work:
newcommandcccc
newcommandmybeginbegin
mybegintabularccc
cell& cell
endtabular
This one works because when TeX expands mybegin
it just finds begin
. TeX then proceeds expanding begin
and doing things normally. The cc
thing works because tabular
expands the tokens of the alignment preamble.
newcommandtabulartwotabular
begintabulartwo ccc
cell& cell
end tabulartwo
This one works by the same reason that the first case didn't. The check for the environment name is performed for tabulartwo
and tabulartwo
, which are the same thing. And the braces there don't make a difference because by TeX's argument grabbing rules, a normal argument is either a single token (tabulartwo
is a single token) or, if a open brace ({
) is found, then the argument is the <balanced text>
within that pair of braces (tabulartwo
and tabular
are <balanced text>
within a pair of braces).
newcommandtabularfourtabular
begin tabularfourccc
cell& cell
end tabularfour
Same as above.
But you really shouldn't be inventing syntax for commands, because even if it works, you will obfuscate your code and not even you will understand it in a few weeks.
1
On the other hand,begintabularccc
will not work if thearray
package is loaded.
â egreg
4 hours ago
add a comment |Â
up vote
2
down vote
up vote
2
down vote
Henri Menke told you how to work around the rules. This answer will show you why the syntax you used (doesn't) work.
The ones that don't work:
newcommandnewcentercenter
beginnewcenter
endcenter
This one fails because @currenvir
expands to newcenter
and when LaTeX calls the @checkend
command, it compares the meaning of @currenvir
and the argument to end
, which is center
. The comparison fails because it compares newcenter
with center
without further expasion, so they differ and an error is raised. The error message, on the other hand, fully expands @currenvir
and the error message is misleading:
! LaTeX Error: begincenter on input line 29 ended by endcenter.
newcommandtabularthreetabular
begin tabularthree ccc
cell& cell
end tabularthree
This one fails because LaTeX checks if the enfironment exists with ifcsname
which will build a command with the argument to begin
which, in this case, is tabularthree
, which expands to tabular
. The ifcsname
then checks for a command named tabular
, which doesn't exist and LaTeX tells you:
! LaTeX Error: Environment tabular undefined.
newcommandtiontion
sectionmysec
This one fails because it's invalid. The command sec
is expanded, and it is the secant function, which is only allowed in math-mode, so TeX thinks you forgot a $
:
! Missing $ inserted.
<inserted text>
$
l.46 sec
If sec
wasn't a math-mode command, TeX would try to execute it. If it had an argument, the argument would be the command tion
, which then expands to tion
and then the sec
command would do its thing (whatever it happened to be) with tion
. If it didn't exist, TeX would complain that sec
doesn't exist.
The one that works:
newcommandoptarg[myoptarg]
sectionoptargmysec
This one compiles, but it doesn't produce what you'd expect. The test for the optional argument fails, because the code for section
doesn't see a [
character (and it doesn't expand optarg
looking for it), so it takes optarg
as the mandatory argument and the title of the section becomes [myoptarg]
and mysec
is written below.
The ones that do work:
newcommandcccc
newcommandmybeginbegin
mybegintabularccc
cell& cell
endtabular
This one works because when TeX expands mybegin
it just finds begin
. TeX then proceeds expanding begin
and doing things normally. The cc
thing works because tabular
expands the tokens of the alignment preamble.
newcommandtabulartwotabular
begintabulartwo ccc
cell& cell
end tabulartwo
This one works by the same reason that the first case didn't. The check for the environment name is performed for tabulartwo
and tabulartwo
, which are the same thing. And the braces there don't make a difference because by TeX's argument grabbing rules, a normal argument is either a single token (tabulartwo
is a single token) or, if a open brace ({
) is found, then the argument is the <balanced text>
within that pair of braces (tabulartwo
and tabular
are <balanced text>
within a pair of braces).
newcommandtabularfourtabular
begin tabularfourccc
cell& cell
end tabularfour
Same as above.
But you really shouldn't be inventing syntax for commands, because even if it works, you will obfuscate your code and not even you will understand it in a few weeks.
Henri Menke told you how to work around the rules. This answer will show you why the syntax you used (doesn't) work.
The ones that don't work:
newcommandnewcentercenter
beginnewcenter
endcenter
This one fails because @currenvir
expands to newcenter
and when LaTeX calls the @checkend
command, it compares the meaning of @currenvir
and the argument to end
, which is center
. The comparison fails because it compares newcenter
with center
without further expasion, so they differ and an error is raised. The error message, on the other hand, fully expands @currenvir
and the error message is misleading:
! LaTeX Error: begincenter on input line 29 ended by endcenter.
newcommandtabularthreetabular
begin tabularthree ccc
cell& cell
end tabularthree
This one fails because LaTeX checks if the enfironment exists with ifcsname
which will build a command with the argument to begin
which, in this case, is tabularthree
, which expands to tabular
. The ifcsname
then checks for a command named tabular
, which doesn't exist and LaTeX tells you:
! LaTeX Error: Environment tabular undefined.
newcommandtiontion
sectionmysec
This one fails because it's invalid. The command sec
is expanded, and it is the secant function, which is only allowed in math-mode, so TeX thinks you forgot a $
:
! Missing $ inserted.
<inserted text>
$
l.46 sec
If sec
wasn't a math-mode command, TeX would try to execute it. If it had an argument, the argument would be the command tion
, which then expands to tion
and then the sec
command would do its thing (whatever it happened to be) with tion
. If it didn't exist, TeX would complain that sec
doesn't exist.
The one that works:
newcommandoptarg[myoptarg]
sectionoptargmysec
This one compiles, but it doesn't produce what you'd expect. The test for the optional argument fails, because the code for section
doesn't see a [
character (and it doesn't expand optarg
looking for it), so it takes optarg
as the mandatory argument and the title of the section becomes [myoptarg]
and mysec
is written below.
The ones that do work:
newcommandcccc
newcommandmybeginbegin
mybegintabularccc
cell& cell
endtabular
This one works because when TeX expands mybegin
it just finds begin
. TeX then proceeds expanding begin
and doing things normally. The cc
thing works because tabular
expands the tokens of the alignment preamble.
newcommandtabulartwotabular
begintabulartwo ccc
cell& cell
end tabulartwo
This one works by the same reason that the first case didn't. The check for the environment name is performed for tabulartwo
and tabulartwo
, which are the same thing. And the braces there don't make a difference because by TeX's argument grabbing rules, a normal argument is either a single token (tabulartwo
is a single token) or, if a open brace ({
) is found, then the argument is the <balanced text>
within that pair of braces (tabulartwo
and tabular
are <balanced text>
within a pair of braces).
newcommandtabularfourtabular
begin tabularfourccc
cell& cell
end tabularfour
Same as above.
But you really shouldn't be inventing syntax for commands, because even if it works, you will obfuscate your code and not even you will understand it in a few weeks.
answered 4 hours ago
Phelype Oleinik
17k43769
17k43769
1
On the other hand,begintabularccc
will not work if thearray
package is loaded.
â egreg
4 hours ago
add a comment |Â
1
On the other hand,begintabularccc
will not work if thearray
package is loaded.
â egreg
4 hours ago
1
1
On the other hand,
begintabularccc
will not work if the array
package is loaded.â egreg
4 hours ago
On the other hand,
begintabularccc
will not work if the array
package is loaded.â egreg
4 hours ago
add a comment |Â
Bighted19 is a new contributor. Be nice, and check out our Code of Conduct.
Bighted19 is a new contributor. Be nice, and check out our Code of Conduct.
Bighted19 is a new contributor. Be nice, and check out our Code of Conduct.
Bighted19 is a new contributor. Be nice, and check out our Code of Conduct.
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
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f452660%2flatex-newcommand-limitation%23new-answer', 'question_page');
);
Post as a guest
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
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
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
I don't really see what the use-case would be other than unreadable and unmaintainable document source code.
â Henri Menke
4 hours ago
These don't so much look like limitations of
newcommand
but an issue of understanding LaTeX (and TeX)'s command expansion rules.â A.Ellett
4 hours ago
these are not really related to
newcommand
but to the use of the macros, you would get the same errors if the macros were defined by the primitivedef
â David Carlisle
4 hours ago