What is the difference between 'macro' and 'command'?
Some people use the word 'macro' and 'command' interchangeably to refer to the instructions given to LaTeX. Is there a real difference between the two terms? If there is, can we see some examples on what the differences are?
macros
|
show 1 more comment
Some people use the word 'macro' and 'command' interchangeably to refer to the instructions given to LaTeX. Is there a real difference between the two terms? If there is, can we see some examples on what the differences are?
macros
1
We writemacro
orcommand
orcontrol sequence
because we don't want to use the same name all the time. We're not lazy ;-)
– Christian Hupfer
2 hours ago
I personally do use these three words slightly differently, and I'm now wondering if this is correct. For me a "macro" is a command defined in terms of other commands (it can be expanded, so I exclude primitives and lengths), a "command" is an instruction that does something (which is admittedly vague, but this would include macros, but not lengths) and a "control" sequence" is a single token that consists of a backslash followed by a sequence of characters (irrespective of whether it is defined at all, but I'm not including active characters). Most commands are all three of these things.
– Circumscribe
1 hour ago
@Circumscribe There are expandable primitives that are sometimes expanding to a value, e.g.eTeXrevision
. Is this a macro as per your definition?
– TeXnician
1 hour ago
@TeXnician: Good point, I realised that only just before you posted your comment [for those reading along: the first version of my comment said that a macro is something that expands to something else]. I would say it is not (nor are e.g.the
,ifx
andcsname
), but I don't know how (or if) these terms are officially defined and I'm actually curious about what users think.
– Circumscribe
1 hour ago
Clarification: for my definition a "macro" would be anything for which theshow<macro>
output starts with "macro:" (and which is thus ultimately defined using a version ofdef
?) and a command would be anything that is either a macro or a primitive (something for whichshow<primitive>
outputs<primitive>
), but is not a register (or a character). That last part is probably terrible as a definition though. I also tend to say "command" rather than "macro" when the instruction performs an assignment rather than producing output, but that's probably just me.
– Circumscribe
35 mins ago
|
show 1 more comment
Some people use the word 'macro' and 'command' interchangeably to refer to the instructions given to LaTeX. Is there a real difference between the two terms? If there is, can we see some examples on what the differences are?
macros
Some people use the word 'macro' and 'command' interchangeably to refer to the instructions given to LaTeX. Is there a real difference between the two terms? If there is, can we see some examples on what the differences are?
macros
macros
edited 5 hours ago
Werner
438k649601652
438k649601652
asked 5 hours ago
Al-Motasem Aldaoudeyeh
1,445311
1,445311
1
We writemacro
orcommand
orcontrol sequence
because we don't want to use the same name all the time. We're not lazy ;-)
– Christian Hupfer
2 hours ago
I personally do use these three words slightly differently, and I'm now wondering if this is correct. For me a "macro" is a command defined in terms of other commands (it can be expanded, so I exclude primitives and lengths), a "command" is an instruction that does something (which is admittedly vague, but this would include macros, but not lengths) and a "control" sequence" is a single token that consists of a backslash followed by a sequence of characters (irrespective of whether it is defined at all, but I'm not including active characters). Most commands are all three of these things.
– Circumscribe
1 hour ago
@Circumscribe There are expandable primitives that are sometimes expanding to a value, e.g.eTeXrevision
. Is this a macro as per your definition?
– TeXnician
1 hour ago
@TeXnician: Good point, I realised that only just before you posted your comment [for those reading along: the first version of my comment said that a macro is something that expands to something else]. I would say it is not (nor are e.g.the
,ifx
andcsname
), but I don't know how (or if) these terms are officially defined and I'm actually curious about what users think.
– Circumscribe
1 hour ago
Clarification: for my definition a "macro" would be anything for which theshow<macro>
output starts with "macro:" (and which is thus ultimately defined using a version ofdef
?) and a command would be anything that is either a macro or a primitive (something for whichshow<primitive>
outputs<primitive>
), but is not a register (or a character). That last part is probably terrible as a definition though. I also tend to say "command" rather than "macro" when the instruction performs an assignment rather than producing output, but that's probably just me.
– Circumscribe
35 mins ago
|
show 1 more comment
1
We writemacro
orcommand
orcontrol sequence
because we don't want to use the same name all the time. We're not lazy ;-)
– Christian Hupfer
2 hours ago
I personally do use these three words slightly differently, and I'm now wondering if this is correct. For me a "macro" is a command defined in terms of other commands (it can be expanded, so I exclude primitives and lengths), a "command" is an instruction that does something (which is admittedly vague, but this would include macros, but not lengths) and a "control" sequence" is a single token that consists of a backslash followed by a sequence of characters (irrespective of whether it is defined at all, but I'm not including active characters). Most commands are all three of these things.
– Circumscribe
1 hour ago
@Circumscribe There are expandable primitives that are sometimes expanding to a value, e.g.eTeXrevision
. Is this a macro as per your definition?
– TeXnician
1 hour ago
@TeXnician: Good point, I realised that only just before you posted your comment [for those reading along: the first version of my comment said that a macro is something that expands to something else]. I would say it is not (nor are e.g.the
,ifx
andcsname
), but I don't know how (or if) these terms are officially defined and I'm actually curious about what users think.
– Circumscribe
1 hour ago
Clarification: for my definition a "macro" would be anything for which theshow<macro>
output starts with "macro:" (and which is thus ultimately defined using a version ofdef
?) and a command would be anything that is either a macro or a primitive (something for whichshow<primitive>
outputs<primitive>
), but is not a register (or a character). That last part is probably terrible as a definition though. I also tend to say "command" rather than "macro" when the instruction performs an assignment rather than producing output, but that's probably just me.
– Circumscribe
35 mins ago
1
1
We write
macro
or command
or control sequence
because we don't want to use the same name all the time. We're not lazy ;-)– Christian Hupfer
2 hours ago
We write
macro
or command
or control sequence
because we don't want to use the same name all the time. We're not lazy ;-)– Christian Hupfer
2 hours ago
I personally do use these three words slightly differently, and I'm now wondering if this is correct. For me a "macro" is a command defined in terms of other commands (it can be expanded, so I exclude primitives and lengths), a "command" is an instruction that does something (which is admittedly vague, but this would include macros, but not lengths) and a "control" sequence" is a single token that consists of a backslash followed by a sequence of characters (irrespective of whether it is defined at all, but I'm not including active characters). Most commands are all three of these things.
– Circumscribe
1 hour ago
I personally do use these three words slightly differently, and I'm now wondering if this is correct. For me a "macro" is a command defined in terms of other commands (it can be expanded, so I exclude primitives and lengths), a "command" is an instruction that does something (which is admittedly vague, but this would include macros, but not lengths) and a "control" sequence" is a single token that consists of a backslash followed by a sequence of characters (irrespective of whether it is defined at all, but I'm not including active characters). Most commands are all three of these things.
– Circumscribe
1 hour ago
@Circumscribe There are expandable primitives that are sometimes expanding to a value, e.g.
eTeXrevision
. Is this a macro as per your definition?– TeXnician
1 hour ago
@Circumscribe There are expandable primitives that are sometimes expanding to a value, e.g.
eTeXrevision
. Is this a macro as per your definition?– TeXnician
1 hour ago
@TeXnician: Good point, I realised that only just before you posted your comment [for those reading along: the first version of my comment said that a macro is something that expands to something else]. I would say it is not (nor are e.g.
the
, ifx
and csname
), but I don't know how (or if) these terms are officially defined and I'm actually curious about what users think.– Circumscribe
1 hour ago
@TeXnician: Good point, I realised that only just before you posted your comment [for those reading along: the first version of my comment said that a macro is something that expands to something else]. I would say it is not (nor are e.g.
the
, ifx
and csname
), but I don't know how (or if) these terms are officially defined and I'm actually curious about what users think.– Circumscribe
1 hour ago
Clarification: for my definition a "macro" would be anything for which the
show<macro>
output starts with "macro:" (and which is thus ultimately defined using a version of def
?) and a command would be anything that is either a macro or a primitive (something for which show<primitive>
outputs <primitive>
), but is not a register (or a character). That last part is probably terrible as a definition though. I also tend to say "command" rather than "macro" when the instruction performs an assignment rather than producing output, but that's probably just me.– Circumscribe
35 mins ago
Clarification: for my definition a "macro" would be anything for which the
show<macro>
output starts with "macro:" (and which is thus ultimately defined using a version of def
?) and a command would be anything that is either a macro or a primitive (something for which show<primitive>
outputs <primitive>
), but is not a register (or a character). That last part is probably terrible as a definition though. I also tend to say "command" rather than "macro" when the instruction performs an assignment rather than producing output, but that's probably just me.– Circumscribe
35 mins ago
|
show 1 more comment
2 Answers
2
active
oldest
votes
They're used interchangeably because they mean the same thing.
A macro is defined as
a single computer instruction that stands for a sequence of operations
The use of command probably stems from the way it's defined in LaTeX via
newcommand
andrenewcommand
and LaTeX3'sxparse
viaNewDocumentCommand
andRenewDocumentCommand
.There's also control sequence used by DEK in his TeX Book. They all point to the same thing.
3
I would not say they mean the same thing, tex primitives are not macros.
– David Carlisle
24 mins ago
add a comment |
macro programming is a programming style (as distinct from compiled programs) where the operation works by each token being replaced inline by its replacement text. Popular macro programming languages other than TeX include the C language pre-processor and the m4 system.
What macro means in LaTeX?
TeX's main mode of user customisation is via its macro processing language, but of course it requires some built in commands (primitives) that you may use to build up macros.
So commands such as def
, halign
, count
are not macros.
Tex also has some primitives that are classed as expandable and so act pretty much the same as pre-defined macros although technically they are not classed as macros in TeX, a list of these expandable primitives is here:
Is there a list of expandable TeX primitives? LaTeX? e-TeX? others?
A control sequence is a string of characters such as foobar
that references a command as opposed to a character such as x
that just references itself, it may reference tex primitives or macros, depending on the context. Note that being a macro is a property of the meaning of the token, but being a control sequence is a property of its syntax. So by default ~
is a macro but it is an active character token not a control sequence.
In TeX macros are always defined by def
and its variants such as edef
. LaTeX definition commands such as newcommand
are themselves macros that ultimately result in an application of def
to define a macro.
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%2f468508%2fwhat-is-the-difference-between-macro-and-command%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
They're used interchangeably because they mean the same thing.
A macro is defined as
a single computer instruction that stands for a sequence of operations
The use of command probably stems from the way it's defined in LaTeX via
newcommand
andrenewcommand
and LaTeX3'sxparse
viaNewDocumentCommand
andRenewDocumentCommand
.There's also control sequence used by DEK in his TeX Book. They all point to the same thing.
3
I would not say they mean the same thing, tex primitives are not macros.
– David Carlisle
24 mins ago
add a comment |
They're used interchangeably because they mean the same thing.
A macro is defined as
a single computer instruction that stands for a sequence of operations
The use of command probably stems from the way it's defined in LaTeX via
newcommand
andrenewcommand
and LaTeX3'sxparse
viaNewDocumentCommand
andRenewDocumentCommand
.There's also control sequence used by DEK in his TeX Book. They all point to the same thing.
3
I would not say they mean the same thing, tex primitives are not macros.
– David Carlisle
24 mins ago
add a comment |
They're used interchangeably because they mean the same thing.
A macro is defined as
a single computer instruction that stands for a sequence of operations
The use of command probably stems from the way it's defined in LaTeX via
newcommand
andrenewcommand
and LaTeX3'sxparse
viaNewDocumentCommand
andRenewDocumentCommand
.There's also control sequence used by DEK in his TeX Book. They all point to the same thing.
They're used interchangeably because they mean the same thing.
A macro is defined as
a single computer instruction that stands for a sequence of operations
The use of command probably stems from the way it's defined in LaTeX via
newcommand
andrenewcommand
and LaTeX3'sxparse
viaNewDocumentCommand
andRenewDocumentCommand
.There's also control sequence used by DEK in his TeX Book. They all point to the same thing.
answered 5 hours ago
Werner
438k649601652
438k649601652
3
I would not say they mean the same thing, tex primitives are not macros.
– David Carlisle
24 mins ago
add a comment |
3
I would not say they mean the same thing, tex primitives are not macros.
– David Carlisle
24 mins ago
3
3
I would not say they mean the same thing, tex primitives are not macros.
– David Carlisle
24 mins ago
I would not say they mean the same thing, tex primitives are not macros.
– David Carlisle
24 mins ago
add a comment |
macro programming is a programming style (as distinct from compiled programs) where the operation works by each token being replaced inline by its replacement text. Popular macro programming languages other than TeX include the C language pre-processor and the m4 system.
What macro means in LaTeX?
TeX's main mode of user customisation is via its macro processing language, but of course it requires some built in commands (primitives) that you may use to build up macros.
So commands such as def
, halign
, count
are not macros.
Tex also has some primitives that are classed as expandable and so act pretty much the same as pre-defined macros although technically they are not classed as macros in TeX, a list of these expandable primitives is here:
Is there a list of expandable TeX primitives? LaTeX? e-TeX? others?
A control sequence is a string of characters such as foobar
that references a command as opposed to a character such as x
that just references itself, it may reference tex primitives or macros, depending on the context. Note that being a macro is a property of the meaning of the token, but being a control sequence is a property of its syntax. So by default ~
is a macro but it is an active character token not a control sequence.
In TeX macros are always defined by def
and its variants such as edef
. LaTeX definition commands such as newcommand
are themselves macros that ultimately result in an application of def
to define a macro.
add a comment |
macro programming is a programming style (as distinct from compiled programs) where the operation works by each token being replaced inline by its replacement text. Popular macro programming languages other than TeX include the C language pre-processor and the m4 system.
What macro means in LaTeX?
TeX's main mode of user customisation is via its macro processing language, but of course it requires some built in commands (primitives) that you may use to build up macros.
So commands such as def
, halign
, count
are not macros.
Tex also has some primitives that are classed as expandable and so act pretty much the same as pre-defined macros although technically they are not classed as macros in TeX, a list of these expandable primitives is here:
Is there a list of expandable TeX primitives? LaTeX? e-TeX? others?
A control sequence is a string of characters such as foobar
that references a command as opposed to a character such as x
that just references itself, it may reference tex primitives or macros, depending on the context. Note that being a macro is a property of the meaning of the token, but being a control sequence is a property of its syntax. So by default ~
is a macro but it is an active character token not a control sequence.
In TeX macros are always defined by def
and its variants such as edef
. LaTeX definition commands such as newcommand
are themselves macros that ultimately result in an application of def
to define a macro.
add a comment |
macro programming is a programming style (as distinct from compiled programs) where the operation works by each token being replaced inline by its replacement text. Popular macro programming languages other than TeX include the C language pre-processor and the m4 system.
What macro means in LaTeX?
TeX's main mode of user customisation is via its macro processing language, but of course it requires some built in commands (primitives) that you may use to build up macros.
So commands such as def
, halign
, count
are not macros.
Tex also has some primitives that are classed as expandable and so act pretty much the same as pre-defined macros although technically they are not classed as macros in TeX, a list of these expandable primitives is here:
Is there a list of expandable TeX primitives? LaTeX? e-TeX? others?
A control sequence is a string of characters such as foobar
that references a command as opposed to a character such as x
that just references itself, it may reference tex primitives or macros, depending on the context. Note that being a macro is a property of the meaning of the token, but being a control sequence is a property of its syntax. So by default ~
is a macro but it is an active character token not a control sequence.
In TeX macros are always defined by def
and its variants such as edef
. LaTeX definition commands such as newcommand
are themselves macros that ultimately result in an application of def
to define a macro.
macro programming is a programming style (as distinct from compiled programs) where the operation works by each token being replaced inline by its replacement text. Popular macro programming languages other than TeX include the C language pre-processor and the m4 system.
What macro means in LaTeX?
TeX's main mode of user customisation is via its macro processing language, but of course it requires some built in commands (primitives) that you may use to build up macros.
So commands such as def
, halign
, count
are not macros.
Tex also has some primitives that are classed as expandable and so act pretty much the same as pre-defined macros although technically they are not classed as macros in TeX, a list of these expandable primitives is here:
Is there a list of expandable TeX primitives? LaTeX? e-TeX? others?
A control sequence is a string of characters such as foobar
that references a command as opposed to a character such as x
that just references itself, it may reference tex primitives or macros, depending on the context. Note that being a macro is a property of the meaning of the token, but being a control sequence is a property of its syntax. So by default ~
is a macro but it is an active character token not a control sequence.
In TeX macros are always defined by def
and its variants such as edef
. LaTeX definition commands such as newcommand
are themselves macros that ultimately result in an application of def
to define a macro.
edited 3 mins ago
answered 10 mins ago
David Carlisle
483k4011151855
483k4011151855
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%2f468508%2fwhat-is-the-difference-between-macro-and-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
1
We write
macro
orcommand
orcontrol sequence
because we don't want to use the same name all the time. We're not lazy ;-)– Christian Hupfer
2 hours ago
I personally do use these three words slightly differently, and I'm now wondering if this is correct. For me a "macro" is a command defined in terms of other commands (it can be expanded, so I exclude primitives and lengths), a "command" is an instruction that does something (which is admittedly vague, but this would include macros, but not lengths) and a "control" sequence" is a single token that consists of a backslash followed by a sequence of characters (irrespective of whether it is defined at all, but I'm not including active characters). Most commands are all three of these things.
– Circumscribe
1 hour ago
@Circumscribe There are expandable primitives that are sometimes expanding to a value, e.g.
eTeXrevision
. Is this a macro as per your definition?– TeXnician
1 hour ago
@TeXnician: Good point, I realised that only just before you posted your comment [for those reading along: the first version of my comment said that a macro is something that expands to something else]. I would say it is not (nor are e.g.
the
,ifx
andcsname
), but I don't know how (or if) these terms are officially defined and I'm actually curious about what users think.– Circumscribe
1 hour ago
Clarification: for my definition a "macro" would be anything for which the
show<macro>
output starts with "macro:" (and which is thus ultimately defined using a version ofdef
?) and a command would be anything that is either a macro or a primitive (something for whichshow<primitive>
outputs<primitive>
), but is not a register (or a character). That last part is probably terrible as a definition though. I also tend to say "command" rather than "macro" when the instruction performs an assignment rather than producing output, but that's probably just me.– Circumscribe
35 mins ago