Extra space after @hangfrom












3















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.










share|improve this question


















  • 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











  • 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











  • @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
















3















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.










share|improve this question


















  • 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











  • 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











  • @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














3












3








3








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.










share|improve this question














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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










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 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













  • 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














  • 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











  • 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











  • @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










1 Answer
1






active

oldest

votes


















4














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).






share|improve this answer
























    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
    });


    }
    });














    draft saved

    draft discarded


















    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









    4














    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).






    share|improve this answer




























      4














      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).






      share|improve this answer


























        4












        4








        4







        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).






        share|improve this answer













        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).







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Mar 21 at 7:45









        frougonfrougon

        61969




        61969






























            draft saved

            draft discarded




















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Biblatex bibliography style without URLs when DOI exists (in Overleaf with Zotero bibliography)

            ComboBox Display Member on multiple fields

            Is it possible to collect Nectar points via Trainline?