Extra space after @hangfrom
I defined a command tstcmd
with one parameter as @hangfrom{[#1]{ }}nobreak
. When using this command, I found that there is always an extra space between the right bracket and the text that follows.
Here is the MWE:
documentclass{article}
makeatletter
deftstcmd#1{@hangfrom{[#1]{ }}nobreak}
%%DeclareRobustCommandtstcmd[1]{@hangfrom{[#1]{ }}nobreak} %%No difference
defhf{@hangfrom}
makeatother
begin{document}
tstcmd{1} fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf
fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf fsdfsd fsdfsd
pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf fsdfsd
hf{[1]{ }}nobreak fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw
hojsoisdjf fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf
fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf fsdfsd
end{document}
Even if DeclareRobustCommand
is used, the extra space remains, and apparently the nobreak
in tstcmd
is not effective. Does anyone know why it is like this and how to fix it? Thanks in advance.
horizontal-alignment
|
show 2 more comments
I defined a command tstcmd
with one parameter as @hangfrom{[#1]{ }}nobreak
. When using this command, I found that there is always an extra space between the right bracket and the text that follows.
Here is the MWE:
documentclass{article}
makeatletter
deftstcmd#1{@hangfrom{[#1]{ }}nobreak}
%%DeclareRobustCommandtstcmd[1]{@hangfrom{[#1]{ }}nobreak} %%No difference
defhf{@hangfrom}
makeatother
begin{document}
tstcmd{1} fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf
fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf fsdfsd fsdfsd
pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf fsdfsd
hf{[1]{ }}nobreak fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw
hojsoisdjf fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf
fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf fsdfsd
end{document}
Even if DeclareRobustCommand
is used, the extra space remains, and apparently the nobreak
in tstcmd
is not effective. Does anyone know why it is like this and how to fix it? Thanks in advance.
horizontal-alignment
1
DeclareRobustCommand
has nothing to do with the problems you described.nobreak
should precede a skip (your space), not follow it. Your extraneous space comes from the fact that you write one in{ }
and another one aftertstcmd{1}
. I suggest something likenewcommand*{tstcmd}[1]{@hangfrom{[#1]nolinebreak }ignorespaces}
given your way of using it.
– frougon
Mar 21 at 7:15
In fact,@hangfrom
puts its argument inside a box, therefore thenolinebreak
is useless as written in my previous comment. It would be better before theignorespaces
, I think. Thus,newcommand*{tstcmd}[1]{@hangfrom{[#1] }nolinebreakignorespaces}
.
– frougon
Mar 21 at 7:27
There may be exceptions (e.g., if the second space is followed byunskip
), but usually, yes. Two space tokens.
– frougon
Mar 21 at 7:31
@frougon Now I see. Thanks a lot! Maybe you could post this as an answer so I can accept it.
– Saad
Mar 21 at 7:32
Why did you delete a question? It becomes difficult to follow...
– frougon
Mar 21 at 7:32
|
show 2 more comments
I defined a command tstcmd
with one parameter as @hangfrom{[#1]{ }}nobreak
. When using this command, I found that there is always an extra space between the right bracket and the text that follows.
Here is the MWE:
documentclass{article}
makeatletter
deftstcmd#1{@hangfrom{[#1]{ }}nobreak}
%%DeclareRobustCommandtstcmd[1]{@hangfrom{[#1]{ }}nobreak} %%No difference
defhf{@hangfrom}
makeatother
begin{document}
tstcmd{1} fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf
fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf fsdfsd fsdfsd
pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf fsdfsd
hf{[1]{ }}nobreak fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw
hojsoisdjf fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf
fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf fsdfsd
end{document}
Even if DeclareRobustCommand
is used, the extra space remains, and apparently the nobreak
in tstcmd
is not effective. Does anyone know why it is like this and how to fix it? Thanks in advance.
horizontal-alignment
I defined a command tstcmd
with one parameter as @hangfrom{[#1]{ }}nobreak
. When using this command, I found that there is always an extra space between the right bracket and the text that follows.
Here is the MWE:
documentclass{article}
makeatletter
deftstcmd#1{@hangfrom{[#1]{ }}nobreak}
%%DeclareRobustCommandtstcmd[1]{@hangfrom{[#1]{ }}nobreak} %%No difference
defhf{@hangfrom}
makeatother
begin{document}
tstcmd{1} fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf
fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf fsdfsd fsdfsd
pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf fsdfsd
hf{[1]{ }}nobreak fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw
hojsoisdjf fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf
fsdfsd fsdfsd pppwp fsdfsd fsdfsd ewrwerw hojsoisdjf fsdfsd
end{document}
Even if DeclareRobustCommand
is used, the extra space remains, and apparently the nobreak
in tstcmd
is not effective. Does anyone know why it is like this and how to fix it? Thanks in advance.
horizontal-alignment
horizontal-alignment
asked Mar 21 at 6:07
SaadSaad
152210
152210
1
DeclareRobustCommand
has nothing to do with the problems you described.nobreak
should precede a skip (your space), not follow it. Your extraneous space comes from the fact that you write one in{ }
and another one aftertstcmd{1}
. I suggest something likenewcommand*{tstcmd}[1]{@hangfrom{[#1]nolinebreak }ignorespaces}
given your way of using it.
– frougon
Mar 21 at 7:15
In fact,@hangfrom
puts its argument inside a box, therefore thenolinebreak
is useless as written in my previous comment. It would be better before theignorespaces
, I think. Thus,newcommand*{tstcmd}[1]{@hangfrom{[#1] }nolinebreakignorespaces}
.
– frougon
Mar 21 at 7:27
There may be exceptions (e.g., if the second space is followed byunskip
), but usually, yes. Two space tokens.
– frougon
Mar 21 at 7:31
@frougon Now I see. Thanks a lot! Maybe you could post this as an answer so I can accept it.
– Saad
Mar 21 at 7:32
Why did you delete a question? It becomes difficult to follow...
– frougon
Mar 21 at 7:32
|
show 2 more comments
1
DeclareRobustCommand
has nothing to do with the problems you described.nobreak
should precede a skip (your space), not follow it. Your extraneous space comes from the fact that you write one in{ }
and another one aftertstcmd{1}
. I suggest something likenewcommand*{tstcmd}[1]{@hangfrom{[#1]nolinebreak }ignorespaces}
given your way of using it.
– frougon
Mar 21 at 7:15
In fact,@hangfrom
puts its argument inside a box, therefore thenolinebreak
is useless as written in my previous comment. It would be better before theignorespaces
, I think. Thus,newcommand*{tstcmd}[1]{@hangfrom{[#1] }nolinebreakignorespaces}
.
– frougon
Mar 21 at 7:27
There may be exceptions (e.g., if the second space is followed byunskip
), but usually, yes. Two space tokens.
– frougon
Mar 21 at 7:31
@frougon Now I see. Thanks a lot! Maybe you could post this as an answer so I can accept it.
– Saad
Mar 21 at 7:32
Why did you delete a question? It becomes difficult to follow...
– frougon
Mar 21 at 7:32
1
1
DeclareRobustCommand
has nothing to do with the problems you described. nobreak
should precede a skip (your space), not follow it. Your extraneous space comes from the fact that you write one in { }
and another one after tstcmd{1}
. I suggest something like newcommand*{tstcmd}[1]{@hangfrom{[#1]nolinebreak }ignorespaces}
given your way of using it.– frougon
Mar 21 at 7:15
DeclareRobustCommand
has nothing to do with the problems you described. nobreak
should precede a skip (your space), not follow it. Your extraneous space comes from the fact that you write one in { }
and another one after tstcmd{1}
. I suggest something like newcommand*{tstcmd}[1]{@hangfrom{[#1]nolinebreak }ignorespaces}
given your way of using it.– frougon
Mar 21 at 7:15
In fact,
@hangfrom
puts its argument inside a box, therefore the nolinebreak
is useless as written in my previous comment. It would be better before the ignorespaces
, I think. Thus, newcommand*{tstcmd}[1]{@hangfrom{[#1] }nolinebreakignorespaces}
.– frougon
Mar 21 at 7:27
In fact,
@hangfrom
puts its argument inside a box, therefore the nolinebreak
is useless as written in my previous comment. It would be better before the ignorespaces
, I think. Thus, newcommand*{tstcmd}[1]{@hangfrom{[#1] }nolinebreakignorespaces}
.– frougon
Mar 21 at 7:27
There may be exceptions (e.g., if the second space is followed by
unskip
), but usually, yes. Two space tokens.– frougon
Mar 21 at 7:31
There may be exceptions (e.g., if the second space is followed by
unskip
), but usually, yes. Two space tokens.– frougon
Mar 21 at 7:31
@frougon Now I see. Thanks a lot! Maybe you could post this as an answer so I can accept it.
– Saad
Mar 21 at 7:32
@frougon Now I see. Thanks a lot! Maybe you could post this as an answer so I can accept it.
– Saad
Mar 21 at 7:32
Why did you delete a question? It becomes difficult to follow...
– frougon
Mar 21 at 7:32
Why did you delete a question? It becomes difficult to follow...
– frougon
Mar 21 at 7:32
|
show 2 more comments
1 Answer
1
active
oldest
votes
DeclareRobustCommand has nothing to do with the problems you described. It would be useful if you wanted to put your tstcmd
calls inside the argument of a command such as section
, where stuff that is not protect'ed gets expanded before it is written to the .toc file. DeclareRobustCommand would make sure the command isn't expanded in such cases, but it doesn't seem very useful here.
nobreak
should precede a glue item (here, your space) when you don't want it to be a legal breakpoint, not follow it. Your extraneous space comes from the fact that you wrote one space token in { }
inside the macro definition and another one at the call site right after tstcmd{1}
. I'd suggest something like:
newcommand*{tstcmd}[1]{%
@hangfrom{[#1] }nolinebreakignorespaces}
given your way of using the command (i.e., with one space token afterwards that should be ignored).
add a comment |
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%2f480625%2fextra-space-after-hangfrom%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
DeclareRobustCommand has nothing to do with the problems you described. It would be useful if you wanted to put your tstcmd
calls inside the argument of a command such as section
, where stuff that is not protect'ed gets expanded before it is written to the .toc file. DeclareRobustCommand would make sure the command isn't expanded in such cases, but it doesn't seem very useful here.
nobreak
should precede a glue item (here, your space) when you don't want it to be a legal breakpoint, not follow it. Your extraneous space comes from the fact that you wrote one space token in { }
inside the macro definition and another one at the call site right after tstcmd{1}
. I'd suggest something like:
newcommand*{tstcmd}[1]{%
@hangfrom{[#1] }nolinebreakignorespaces}
given your way of using the command (i.e., with one space token afterwards that should be ignored).
add a comment |
DeclareRobustCommand has nothing to do with the problems you described. It would be useful if you wanted to put your tstcmd
calls inside the argument of a command such as section
, where stuff that is not protect'ed gets expanded before it is written to the .toc file. DeclareRobustCommand would make sure the command isn't expanded in such cases, but it doesn't seem very useful here.
nobreak
should precede a glue item (here, your space) when you don't want it to be a legal breakpoint, not follow it. Your extraneous space comes from the fact that you wrote one space token in { }
inside the macro definition and another one at the call site right after tstcmd{1}
. I'd suggest something like:
newcommand*{tstcmd}[1]{%
@hangfrom{[#1] }nolinebreakignorespaces}
given your way of using the command (i.e., with one space token afterwards that should be ignored).
add a comment |
DeclareRobustCommand has nothing to do with the problems you described. It would be useful if you wanted to put your tstcmd
calls inside the argument of a command such as section
, where stuff that is not protect'ed gets expanded before it is written to the .toc file. DeclareRobustCommand would make sure the command isn't expanded in such cases, but it doesn't seem very useful here.
nobreak
should precede a glue item (here, your space) when you don't want it to be a legal breakpoint, not follow it. Your extraneous space comes from the fact that you wrote one space token in { }
inside the macro definition and another one at the call site right after tstcmd{1}
. I'd suggest something like:
newcommand*{tstcmd}[1]{%
@hangfrom{[#1] }nolinebreakignorespaces}
given your way of using the command (i.e., with one space token afterwards that should be ignored).
DeclareRobustCommand has nothing to do with the problems you described. It would be useful if you wanted to put your tstcmd
calls inside the argument of a command such as section
, where stuff that is not protect'ed gets expanded before it is written to the .toc file. DeclareRobustCommand would make sure the command isn't expanded in such cases, but it doesn't seem very useful here.
nobreak
should precede a glue item (here, your space) when you don't want it to be a legal breakpoint, not follow it. Your extraneous space comes from the fact that you wrote one space token in { }
inside the macro definition and another one at the call site right after tstcmd{1}
. I'd suggest something like:
newcommand*{tstcmd}[1]{%
@hangfrom{[#1] }nolinebreakignorespaces}
given your way of using the command (i.e., with one space token afterwards that should be ignored).
answered Mar 21 at 7:45
frougonfrougon
61969
61969
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%2f480625%2fextra-space-after-hangfrom%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
DeclareRobustCommand
has nothing to do with the problems you described.nobreak
should precede a skip (your space), not follow it. Your extraneous space comes from the fact that you write one in{ }
and another one aftertstcmd{1}
. I suggest something likenewcommand*{tstcmd}[1]{@hangfrom{[#1]nolinebreak }ignorespaces}
given your way of using it.– frougon
Mar 21 at 7:15
In fact,
@hangfrom
puts its argument inside a box, therefore thenolinebreak
is useless as written in my previous comment. It would be better before theignorespaces
, I think. Thus,newcommand*{tstcmd}[1]{@hangfrom{[#1] }nolinebreakignorespaces}
.– frougon
Mar 21 at 7:27
There may be exceptions (e.g., if the second space is followed by
unskip
), but usually, yes. Two space tokens.– frougon
Mar 21 at 7:31
@frougon Now I see. Thanks a lot! Maybe you could post this as an answer so I can accept it.
– Saad
Mar 21 at 7:32
Why did you delete a question? It becomes difficult to follow...
– frougon
Mar 21 at 7:32