Strange error defining a macro with arguments for math mode
When I delete the second item
, it compiles fine. However, with the second item
, I get ERROR: Missing $ inserted
and the math renders incorrectly:
documentclass[12pt]{article}
newcommand frob[2] {langle #1,#2 rangle_F}
begin{document}
begin{itemize}
item What I want: $
langle A,B rangle_F
geq
langle C,D rangle_F
$.
item What I get: $
frob{A,B}
geq
frob{A,B}
$.
end{itemize}
end{document}
Would appreciate any help with this issue!
math-mode macros
add a comment |
When I delete the second item
, it compiles fine. However, with the second item
, I get ERROR: Missing $ inserted
and the math renders incorrectly:
documentclass[12pt]{article}
newcommand frob[2] {langle #1,#2 rangle_F}
begin{document}
begin{itemize}
item What I want: $
langle A,B rangle_F
geq
langle C,D rangle_F
$.
item What I get: $
frob{A,B}
geq
frob{A,B}
$.
end{itemize}
end{document}
Would appreciate any help with this issue!
math-mode macros
Don't usefrob
asfrob{A,B}
but use it asfrob{A}{B}
. Yourfrob
-macro does process two arguments which are not comma-separated. As result it delivers something where the phrases delivered via the arguments will be comma-separated. Maybe this confused you. ;-) If you dofrob{A,B}geq
,frob
's first undelimited argument will be formed from{A,B}
andfrob
's second undelimited argument will be formed fromgeq
. So all in allfrob{A,B} geq frob{A,B}
should befrob{A}{B}geqfrob{C}{D}
.
– Ulrich Diez
Feb 2 at 1:45
add a comment |
When I delete the second item
, it compiles fine. However, with the second item
, I get ERROR: Missing $ inserted
and the math renders incorrectly:
documentclass[12pt]{article}
newcommand frob[2] {langle #1,#2 rangle_F}
begin{document}
begin{itemize}
item What I want: $
langle A,B rangle_F
geq
langle C,D rangle_F
$.
item What I get: $
frob{A,B}
geq
frob{A,B}
$.
end{itemize}
end{document}
Would appreciate any help with this issue!
math-mode macros
When I delete the second item
, it compiles fine. However, with the second item
, I get ERROR: Missing $ inserted
and the math renders incorrectly:
documentclass[12pt]{article}
newcommand frob[2] {langle #1,#2 rangle_F}
begin{document}
begin{itemize}
item What I want: $
langle A,B rangle_F
geq
langle C,D rangle_F
$.
item What I get: $
frob{A,B}
geq
frob{A,B}
$.
end{itemize}
end{document}
Would appreciate any help with this issue!
math-mode macros
math-mode macros
asked Feb 2 at 1:27
Elliot GorokhovskyElliot Gorokhovsky
355112
355112
Don't usefrob
asfrob{A,B}
but use it asfrob{A}{B}
. Yourfrob
-macro does process two arguments which are not comma-separated. As result it delivers something where the phrases delivered via the arguments will be comma-separated. Maybe this confused you. ;-) If you dofrob{A,B}geq
,frob
's first undelimited argument will be formed from{A,B}
andfrob
's second undelimited argument will be formed fromgeq
. So all in allfrob{A,B} geq frob{A,B}
should befrob{A}{B}geqfrob{C}{D}
.
– Ulrich Diez
Feb 2 at 1:45
add a comment |
Don't usefrob
asfrob{A,B}
but use it asfrob{A}{B}
. Yourfrob
-macro does process two arguments which are not comma-separated. As result it delivers something where the phrases delivered via the arguments will be comma-separated. Maybe this confused you. ;-) If you dofrob{A,B}geq
,frob
's first undelimited argument will be formed from{A,B}
andfrob
's second undelimited argument will be formed fromgeq
. So all in allfrob{A,B} geq frob{A,B}
should befrob{A}{B}geqfrob{C}{D}
.
– Ulrich Diez
Feb 2 at 1:45
Don't use
frob
as frob{A,B}
but use it as frob{A}{B}
. Your frob
-macro does process two arguments which are not comma-separated. As result it delivers something where the phrases delivered via the arguments will be comma-separated. Maybe this confused you. ;-) If you do frob{A,B}geq
, frob
's first undelimited argument will be formed from {A,B}
and frob
's second undelimited argument will be formed from geq
. So all in all frob{A,B} geq frob{A,B}
should be frob{A}{B}geqfrob{C}{D}
.– Ulrich Diez
Feb 2 at 1:45
Don't use
frob
as frob{A,B}
but use it as frob{A}{B}
. Your frob
-macro does process two arguments which are not comma-separated. As result it delivers something where the phrases delivered via the arguments will be comma-separated. Maybe this confused you. ;-) If you do frob{A,B}geq
, frob
's first undelimited argument will be formed from {A,B}
and frob
's second undelimited argument will be formed from geq
. So all in all frob{A,B} geq frob{A,B}
should be frob{A}{B}geqfrob{C}{D}
.– Ulrich Diez
Feb 2 at 1:45
add a comment |
1 Answer
1
active
oldest
votes
You defined frob
to take two arguments
newcommand{frob}[2]
However, you're only passing it one argument when you use it like this
frob{A,B}
That's because arguments are specified as tokens or using braces {
...}
, not a comma-separated list of elements.
Since you're printing the same thing as you're passing, the following might be simpler:
documentclass{article}
newcommand{frob}[1]{langle #1 rangle_F}
begin{document}
begin{itemize}
item
What I want: $
langle A,B rangle_F
geq
langle C,D rangle_F
$.
item
What I get: $
frob{A,B}
geq
frob{A,B}
$.
end{itemize}
end{document}
If you really want to pass two arguments, then your definition should be
newcommand{frob}[2]{langle #1, #2 rangle_F}
and you'll use it via frob{A}{B}
.
Ah, obviously! I've usedfrac
that way, but somehow had a brain fart when defining my own function. Thanks!
– Elliot Gorokhovsky
Feb 2 at 22:13
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%2f472980%2fstrange-error-defining-a-macro-with-arguments-for-math-mode%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
You defined frob
to take two arguments
newcommand{frob}[2]
However, you're only passing it one argument when you use it like this
frob{A,B}
That's because arguments are specified as tokens or using braces {
...}
, not a comma-separated list of elements.
Since you're printing the same thing as you're passing, the following might be simpler:
documentclass{article}
newcommand{frob}[1]{langle #1 rangle_F}
begin{document}
begin{itemize}
item
What I want: $
langle A,B rangle_F
geq
langle C,D rangle_F
$.
item
What I get: $
frob{A,B}
geq
frob{A,B}
$.
end{itemize}
end{document}
If you really want to pass two arguments, then your definition should be
newcommand{frob}[2]{langle #1, #2 rangle_F}
and you'll use it via frob{A}{B}
.
Ah, obviously! I've usedfrac
that way, but somehow had a brain fart when defining my own function. Thanks!
– Elliot Gorokhovsky
Feb 2 at 22:13
add a comment |
You defined frob
to take two arguments
newcommand{frob}[2]
However, you're only passing it one argument when you use it like this
frob{A,B}
That's because arguments are specified as tokens or using braces {
...}
, not a comma-separated list of elements.
Since you're printing the same thing as you're passing, the following might be simpler:
documentclass{article}
newcommand{frob}[1]{langle #1 rangle_F}
begin{document}
begin{itemize}
item
What I want: $
langle A,B rangle_F
geq
langle C,D rangle_F
$.
item
What I get: $
frob{A,B}
geq
frob{A,B}
$.
end{itemize}
end{document}
If you really want to pass two arguments, then your definition should be
newcommand{frob}[2]{langle #1, #2 rangle_F}
and you'll use it via frob{A}{B}
.
Ah, obviously! I've usedfrac
that way, but somehow had a brain fart when defining my own function. Thanks!
– Elliot Gorokhovsky
Feb 2 at 22:13
add a comment |
You defined frob
to take two arguments
newcommand{frob}[2]
However, you're only passing it one argument when you use it like this
frob{A,B}
That's because arguments are specified as tokens or using braces {
...}
, not a comma-separated list of elements.
Since you're printing the same thing as you're passing, the following might be simpler:
documentclass{article}
newcommand{frob}[1]{langle #1 rangle_F}
begin{document}
begin{itemize}
item
What I want: $
langle A,B rangle_F
geq
langle C,D rangle_F
$.
item
What I get: $
frob{A,B}
geq
frob{A,B}
$.
end{itemize}
end{document}
If you really want to pass two arguments, then your definition should be
newcommand{frob}[2]{langle #1, #2 rangle_F}
and you'll use it via frob{A}{B}
.
You defined frob
to take two arguments
newcommand{frob}[2]
However, you're only passing it one argument when you use it like this
frob{A,B}
That's because arguments are specified as tokens or using braces {
...}
, not a comma-separated list of elements.
Since you're printing the same thing as you're passing, the following might be simpler:
documentclass{article}
newcommand{frob}[1]{langle #1 rangle_F}
begin{document}
begin{itemize}
item
What I want: $
langle A,B rangle_F
geq
langle C,D rangle_F
$.
item
What I get: $
frob{A,B}
geq
frob{A,B}
$.
end{itemize}
end{document}
If you really want to pass two arguments, then your definition should be
newcommand{frob}[2]{langle #1, #2 rangle_F}
and you'll use it via frob{A}{B}
.
answered Feb 2 at 1:50
WernerWerner
443k679791676
443k679791676
Ah, obviously! I've usedfrac
that way, but somehow had a brain fart when defining my own function. Thanks!
– Elliot Gorokhovsky
Feb 2 at 22:13
add a comment |
Ah, obviously! I've usedfrac
that way, but somehow had a brain fart when defining my own function. Thanks!
– Elliot Gorokhovsky
Feb 2 at 22:13
Ah, obviously! I've used
frac
that way, but somehow had a brain fart when defining my own function. Thanks!– Elliot Gorokhovsky
Feb 2 at 22:13
Ah, obviously! I've used
frac
that way, but somehow had a brain fart when defining my own function. Thanks!– Elliot Gorokhovsky
Feb 2 at 22:13
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%2f472980%2fstrange-error-defining-a-macro-with-arguments-for-math-mode%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
Don't use
frob
asfrob{A,B}
but use it asfrob{A}{B}
. Yourfrob
-macro does process two arguments which are not comma-separated. As result it delivers something where the phrases delivered via the arguments will be comma-separated. Maybe this confused you. ;-) If you dofrob{A,B}geq
,frob
's first undelimited argument will be formed from{A,B}
andfrob
's second undelimited argument will be formed fromgeq
. So all in allfrob{A,B} geq frob{A,B}
should befrob{A}{B}geqfrob{C}{D}
.– Ulrich Diez
Feb 2 at 1:45