Is mathrel always needed?












11















I answered another question (LaTeX models symbol that goes both ways) creating a new symbol, a relation, without using mathrel.



In his answer to the same question, Werner used it (he also used joinrel, a command I didn't know, where I used !).



In this case, however, I see no difference in the results with or without mathrel. Is it always needed?



documentclass{article} 
newcommand{mymod}{mathrel{models!mid}}
newcommand{mymode}{models!mid}
newcommand{mymodel}{mathrel{modelsjoinrelmid}}
begin{document}
This is without verb|mathrel|, with verb|!|:
[ A mymod Bquad {scriptstyle A mymod B }quad {scriptscriptstyle A mymod B }]
This is with verb|mathrel|, with verb|!|:
[ A mymode Bquad {scriptstyle A mymode B }quad {scriptscriptstyle A mymode B } ]
This is with verb|mathrel| and verb|joinrel|:
[ A mymodel B quad {scriptstyle A mymodel B }quad {scriptscriptstyle A mymodel B }]
They seem the same to me. What is the difference?
end{document}


enter image description here










share|improve this question


















  • 1





    ! does mskip-thinmuskip where thinmuskip=3mu, whereas joinrel does mathrel{mkern-3mu}, so if the atoms on both sides of joinrel are also rel atoms, the two commands are equivalent.

    – Henri Menke
    Jan 24 at 21:00






  • 1





    mathrel like mathbin etc. adjust the "class" of the following group. The different groups are described in the TeX Book. It's basically to tell the system the semantics of your symbol.

    – TeXnician
    Jan 24 at 21:02











  • @TeXnician but in this case probably the "class" is already correct, isn't it?

    – CarLaTeX
    Jan 24 at 21:06











  • I actually don't know in which classes mid and models are but as the spacing seems correct it is probably mathbin or mathrel. The only semantic difference is that you now do not have one relation but actually two following each other (models and mid). I don't know whether this might have any side effects on the spacing but I think that, as long as you are not adding any groups inbetween, you are safe.

    – TeXnician
    Jan 24 at 21:14











  • @TeXnician Thank you, your thought is correct, see Henri's answer :)

    – CarLaTeX
    Jan 24 at 21:16
















11















I answered another question (LaTeX models symbol that goes both ways) creating a new symbol, a relation, without using mathrel.



In his answer to the same question, Werner used it (he also used joinrel, a command I didn't know, where I used !).



In this case, however, I see no difference in the results with or without mathrel. Is it always needed?



documentclass{article} 
newcommand{mymod}{mathrel{models!mid}}
newcommand{mymode}{models!mid}
newcommand{mymodel}{mathrel{modelsjoinrelmid}}
begin{document}
This is without verb|mathrel|, with verb|!|:
[ A mymod Bquad {scriptstyle A mymod B }quad {scriptscriptstyle A mymod B }]
This is with verb|mathrel|, with verb|!|:
[ A mymode Bquad {scriptstyle A mymode B }quad {scriptscriptstyle A mymode B } ]
This is with verb|mathrel| and verb|joinrel|:
[ A mymodel B quad {scriptstyle A mymodel B }quad {scriptscriptstyle A mymodel B }]
They seem the same to me. What is the difference?
end{document}


enter image description here










share|improve this question


















  • 1





    ! does mskip-thinmuskip where thinmuskip=3mu, whereas joinrel does mathrel{mkern-3mu}, so if the atoms on both sides of joinrel are also rel atoms, the two commands are equivalent.

    – Henri Menke
    Jan 24 at 21:00






  • 1





    mathrel like mathbin etc. adjust the "class" of the following group. The different groups are described in the TeX Book. It's basically to tell the system the semantics of your symbol.

    – TeXnician
    Jan 24 at 21:02











  • @TeXnician but in this case probably the "class" is already correct, isn't it?

    – CarLaTeX
    Jan 24 at 21:06











  • I actually don't know in which classes mid and models are but as the spacing seems correct it is probably mathbin or mathrel. The only semantic difference is that you now do not have one relation but actually two following each other (models and mid). I don't know whether this might have any side effects on the spacing but I think that, as long as you are not adding any groups inbetween, you are safe.

    – TeXnician
    Jan 24 at 21:14











  • @TeXnician Thank you, your thought is correct, see Henri's answer :)

    – CarLaTeX
    Jan 24 at 21:16














11












11








11








I answered another question (LaTeX models symbol that goes both ways) creating a new symbol, a relation, without using mathrel.



In his answer to the same question, Werner used it (he also used joinrel, a command I didn't know, where I used !).



In this case, however, I see no difference in the results with or without mathrel. Is it always needed?



documentclass{article} 
newcommand{mymod}{mathrel{models!mid}}
newcommand{mymode}{models!mid}
newcommand{mymodel}{mathrel{modelsjoinrelmid}}
begin{document}
This is without verb|mathrel|, with verb|!|:
[ A mymod Bquad {scriptstyle A mymod B }quad {scriptscriptstyle A mymod B }]
This is with verb|mathrel|, with verb|!|:
[ A mymode Bquad {scriptstyle A mymode B }quad {scriptscriptstyle A mymode B } ]
This is with verb|mathrel| and verb|joinrel|:
[ A mymodel B quad {scriptstyle A mymodel B }quad {scriptscriptstyle A mymodel B }]
They seem the same to me. What is the difference?
end{document}


enter image description here










share|improve this question














I answered another question (LaTeX models symbol that goes both ways) creating a new symbol, a relation, without using mathrel.



In his answer to the same question, Werner used it (he also used joinrel, a command I didn't know, where I used !).



In this case, however, I see no difference in the results with or without mathrel. Is it always needed?



documentclass{article} 
newcommand{mymod}{mathrel{models!mid}}
newcommand{mymode}{models!mid}
newcommand{mymodel}{mathrel{modelsjoinrelmid}}
begin{document}
This is without verb|mathrel|, with verb|!|:
[ A mymod Bquad {scriptstyle A mymod B }quad {scriptscriptstyle A mymod B }]
This is with verb|mathrel|, with verb|!|:
[ A mymode Bquad {scriptstyle A mymode B }quad {scriptscriptstyle A mymode B } ]
This is with verb|mathrel| and verb|joinrel|:
[ A mymodel B quad {scriptstyle A mymodel B }quad {scriptscriptstyle A mymodel B }]
They seem the same to me. What is the difference?
end{document}


enter image description here







math-mode relation-symbols






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jan 24 at 19:46









CarLaTeXCarLaTeX

32k551133




32k551133








  • 1





    ! does mskip-thinmuskip where thinmuskip=3mu, whereas joinrel does mathrel{mkern-3mu}, so if the atoms on both sides of joinrel are also rel atoms, the two commands are equivalent.

    – Henri Menke
    Jan 24 at 21:00






  • 1





    mathrel like mathbin etc. adjust the "class" of the following group. The different groups are described in the TeX Book. It's basically to tell the system the semantics of your symbol.

    – TeXnician
    Jan 24 at 21:02











  • @TeXnician but in this case probably the "class" is already correct, isn't it?

    – CarLaTeX
    Jan 24 at 21:06











  • I actually don't know in which classes mid and models are but as the spacing seems correct it is probably mathbin or mathrel. The only semantic difference is that you now do not have one relation but actually two following each other (models and mid). I don't know whether this might have any side effects on the spacing but I think that, as long as you are not adding any groups inbetween, you are safe.

    – TeXnician
    Jan 24 at 21:14











  • @TeXnician Thank you, your thought is correct, see Henri's answer :)

    – CarLaTeX
    Jan 24 at 21:16














  • 1





    ! does mskip-thinmuskip where thinmuskip=3mu, whereas joinrel does mathrel{mkern-3mu}, so if the atoms on both sides of joinrel are also rel atoms, the two commands are equivalent.

    – Henri Menke
    Jan 24 at 21:00






  • 1





    mathrel like mathbin etc. adjust the "class" of the following group. The different groups are described in the TeX Book. It's basically to tell the system the semantics of your symbol.

    – TeXnician
    Jan 24 at 21:02











  • @TeXnician but in this case probably the "class" is already correct, isn't it?

    – CarLaTeX
    Jan 24 at 21:06











  • I actually don't know in which classes mid and models are but as the spacing seems correct it is probably mathbin or mathrel. The only semantic difference is that you now do not have one relation but actually two following each other (models and mid). I don't know whether this might have any side effects on the spacing but I think that, as long as you are not adding any groups inbetween, you are safe.

    – TeXnician
    Jan 24 at 21:14











  • @TeXnician Thank you, your thought is correct, see Henri's answer :)

    – CarLaTeX
    Jan 24 at 21:16








1




1





! does mskip-thinmuskip where thinmuskip=3mu, whereas joinrel does mathrel{mkern-3mu}, so if the atoms on both sides of joinrel are also rel atoms, the two commands are equivalent.

– Henri Menke
Jan 24 at 21:00





! does mskip-thinmuskip where thinmuskip=3mu, whereas joinrel does mathrel{mkern-3mu}, so if the atoms on both sides of joinrel are also rel atoms, the two commands are equivalent.

– Henri Menke
Jan 24 at 21:00




1




1





mathrel like mathbin etc. adjust the "class" of the following group. The different groups are described in the TeX Book. It's basically to tell the system the semantics of your symbol.

– TeXnician
Jan 24 at 21:02





mathrel like mathbin etc. adjust the "class" of the following group. The different groups are described in the TeX Book. It's basically to tell the system the semantics of your symbol.

– TeXnician
Jan 24 at 21:02













@TeXnician but in this case probably the "class" is already correct, isn't it?

– CarLaTeX
Jan 24 at 21:06





@TeXnician but in this case probably the "class" is already correct, isn't it?

– CarLaTeX
Jan 24 at 21:06













I actually don't know in which classes mid and models are but as the spacing seems correct it is probably mathbin or mathrel. The only semantic difference is that you now do not have one relation but actually two following each other (models and mid). I don't know whether this might have any side effects on the spacing but I think that, as long as you are not adding any groups inbetween, you are safe.

– TeXnician
Jan 24 at 21:14





I actually don't know in which classes mid and models are but as the spacing seems correct it is probably mathbin or mathrel. The only semantic difference is that you now do not have one relation but actually two following each other (models and mid). I don't know whether this might have any side effects on the spacing but I think that, as long as you are not adding any groups inbetween, you are safe.

– TeXnician
Jan 24 at 21:14













@TeXnician Thank you, your thought is correct, see Henri's answer :)

– CarLaTeX
Jan 24 at 21:16





@TeXnician Thank you, your thought is correct, see Henri's answer :)

– CarLaTeX
Jan 24 at 21:16










2 Answers
2






active

oldest

votes


















11














You can figure out what is going on using the table on page 170 of the TeXbook.




enter image description here



Here 0, 1, 2, and 3 stand for no space, thin space, medium space, and thick space, respectively; the table entry is parenthesized if the space is to be inserted only in display and text styles, not in script and scriptscript styles.




First we look at the definitions of models, mid, !, and joinrel. For simplicity I use the definitions from Plain TeX (the LaTeX definitions are similar but with some extra protect and stuff).



defmodels{mathrel|joinrel=}
mathchardefmid="326A
def!{mskip-thinmuskip} % thinmuskip=3mu
defjoinrel{mathrel{mkern-3mu}}


Checking in the table the spacing between a Rel and a Rel atom we find 0, i.e. no spacing at all. That means that there will be no space inserted between any of the atoms in any of the following sequences because all the atoms are Rel (except mskip which is not an atom)



models!mid
modelsjoinrelmid


Because the leftmost and rightmost atoms in these sequences are of type Rel, the whole sequence will behave like a Rel atom (with respect to spacing). So in this case the enclosing mathrel is redundant.






share|improve this answer

































    10














    The ugly



    newcommand{mymodel}{mathrel{modelsjoinrelmid}} 


    The bad



    newcommand{mymod}{mathrel{models!mid}} 
    newcommand{mymode}{models!mid}


    The good



    newcommand{foo}{modelsjoinrelmid}


    The best™



    DeclareRobustCommand{xjoinrel}{mathrel{mkern-3.5mu}}
    letmodelsrelax % undefine models
    DeclareRobustCommand{models}{mathrel{|}xjoinrelRelbar} %% YES!
    DeclareRobustCommand{mymod}{mathrel{|}xjoinrelRelbarxjoinrelmathrel{|}}


    Explanations



    TeX never adds space between two consecutive relation symbols. Since models is defined as mathrel{|}joinrelRelbar and all three are relation symbols, the first method has a redundant mathrel.



    The command joinrel is mathrel{mkern-3mu}. Using mid and mathrel{|} is the same, but in this context mathrel{|} is better because mid might be used for a different symbol.



    Why are the other two bad? Because ! is not the right spacing.



    The good is just what's needed, because it gives a relation and adds no spaces in between.



    The best method avoids the little gap between the Relbar and mid. Look closely in the table below.



    documentclass{article}
    usepackage{amsmath}
    usepackage{booktabs}

    DeclareRobustCommand{xjoinrel}{mathrel{mkern-3.5mu}}

    renewcommand{models}{%
    mathrel{|}
    xjoinrel
    Relbar
    }
    newcommand{modeledby}{%
    Relbar
    xjoinrel
    mathrel{|}
    }
    newcommand{doublemodels}{%
    mathrel{|}
    xjoinrel
    Relbar
    xjoinrel
    mathrel{|}
    }

    begin{document}

    begin{tabular}{cc}
    toprule
    New & Old \
    midrule
    $Amodels B$ & $AmidjoinrelRelbar B$ \
    $Amodeledby B$ & $A Relbarjoinrelmid B$ \
    $Adoublemodels B$ & $A midjoinrelRelbarjoinrelmid B$ \
    bottomrule
    end{tabular}

    end{document}


    enter image description here






    share|improve this answer


























    • Eventually, are you saying the current models is not perfect?

      – CarLaTeX
      Jan 24 at 21:50






    • 2





      @CarLaTeX I dare to! ;-) Besides, there are better symbols in amssymb.

      – egreg
      Jan 24 at 22:01













    • It has been very difficult to choose which answer to accept. I accepted Henri's one because it is more focalized on the general problem rather than the specific symbol. Moreover: tex.meta.stackexchange.com/a/7463/101651 :)

      – CarLaTeX
      Jan 25 at 6:05











    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%2f471713%2fis-mathrel-always-needed%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









    11














    You can figure out what is going on using the table on page 170 of the TeXbook.




    enter image description here



    Here 0, 1, 2, and 3 stand for no space, thin space, medium space, and thick space, respectively; the table entry is parenthesized if the space is to be inserted only in display and text styles, not in script and scriptscript styles.




    First we look at the definitions of models, mid, !, and joinrel. For simplicity I use the definitions from Plain TeX (the LaTeX definitions are similar but with some extra protect and stuff).



    defmodels{mathrel|joinrel=}
    mathchardefmid="326A
    def!{mskip-thinmuskip} % thinmuskip=3mu
    defjoinrel{mathrel{mkern-3mu}}


    Checking in the table the spacing between a Rel and a Rel atom we find 0, i.e. no spacing at all. That means that there will be no space inserted between any of the atoms in any of the following sequences because all the atoms are Rel (except mskip which is not an atom)



    models!mid
    modelsjoinrelmid


    Because the leftmost and rightmost atoms in these sequences are of type Rel, the whole sequence will behave like a Rel atom (with respect to spacing). So in this case the enclosing mathrel is redundant.






    share|improve this answer






























      11














      You can figure out what is going on using the table on page 170 of the TeXbook.




      enter image description here



      Here 0, 1, 2, and 3 stand for no space, thin space, medium space, and thick space, respectively; the table entry is parenthesized if the space is to be inserted only in display and text styles, not in script and scriptscript styles.




      First we look at the definitions of models, mid, !, and joinrel. For simplicity I use the definitions from Plain TeX (the LaTeX definitions are similar but with some extra protect and stuff).



      defmodels{mathrel|joinrel=}
      mathchardefmid="326A
      def!{mskip-thinmuskip} % thinmuskip=3mu
      defjoinrel{mathrel{mkern-3mu}}


      Checking in the table the spacing between a Rel and a Rel atom we find 0, i.e. no spacing at all. That means that there will be no space inserted between any of the atoms in any of the following sequences because all the atoms are Rel (except mskip which is not an atom)



      models!mid
      modelsjoinrelmid


      Because the leftmost and rightmost atoms in these sequences are of type Rel, the whole sequence will behave like a Rel atom (with respect to spacing). So in this case the enclosing mathrel is redundant.






      share|improve this answer




























        11












        11








        11







        You can figure out what is going on using the table on page 170 of the TeXbook.




        enter image description here



        Here 0, 1, 2, and 3 stand for no space, thin space, medium space, and thick space, respectively; the table entry is parenthesized if the space is to be inserted only in display and text styles, not in script and scriptscript styles.




        First we look at the definitions of models, mid, !, and joinrel. For simplicity I use the definitions from Plain TeX (the LaTeX definitions are similar but with some extra protect and stuff).



        defmodels{mathrel|joinrel=}
        mathchardefmid="326A
        def!{mskip-thinmuskip} % thinmuskip=3mu
        defjoinrel{mathrel{mkern-3mu}}


        Checking in the table the spacing between a Rel and a Rel atom we find 0, i.e. no spacing at all. That means that there will be no space inserted between any of the atoms in any of the following sequences because all the atoms are Rel (except mskip which is not an atom)



        models!mid
        modelsjoinrelmid


        Because the leftmost and rightmost atoms in these sequences are of type Rel, the whole sequence will behave like a Rel atom (with respect to spacing). So in this case the enclosing mathrel is redundant.






        share|improve this answer















        You can figure out what is going on using the table on page 170 of the TeXbook.




        enter image description here



        Here 0, 1, 2, and 3 stand for no space, thin space, medium space, and thick space, respectively; the table entry is parenthesized if the space is to be inserted only in display and text styles, not in script and scriptscript styles.




        First we look at the definitions of models, mid, !, and joinrel. For simplicity I use the definitions from Plain TeX (the LaTeX definitions are similar but with some extra protect and stuff).



        defmodels{mathrel|joinrel=}
        mathchardefmid="326A
        def!{mskip-thinmuskip} % thinmuskip=3mu
        defjoinrel{mathrel{mkern-3mu}}


        Checking in the table the spacing between a Rel and a Rel atom we find 0, i.e. no spacing at all. That means that there will be no space inserted between any of the atoms in any of the following sequences because all the atoms are Rel (except mskip which is not an atom)



        models!mid
        modelsjoinrelmid


        Because the leftmost and rightmost atoms in these sequences are of type Rel, the whole sequence will behave like a Rel atom (with respect to spacing). So in this case the enclosing mathrel is redundant.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Jan 25 at 6:04

























        answered Jan 24 at 21:10









        Henri MenkeHenri Menke

        75.9k8166281




        75.9k8166281























            10














            The ugly



            newcommand{mymodel}{mathrel{modelsjoinrelmid}} 


            The bad



            newcommand{mymod}{mathrel{models!mid}} 
            newcommand{mymode}{models!mid}


            The good



            newcommand{foo}{modelsjoinrelmid}


            The best™



            DeclareRobustCommand{xjoinrel}{mathrel{mkern-3.5mu}}
            letmodelsrelax % undefine models
            DeclareRobustCommand{models}{mathrel{|}xjoinrelRelbar} %% YES!
            DeclareRobustCommand{mymod}{mathrel{|}xjoinrelRelbarxjoinrelmathrel{|}}


            Explanations



            TeX never adds space between two consecutive relation symbols. Since models is defined as mathrel{|}joinrelRelbar and all three are relation symbols, the first method has a redundant mathrel.



            The command joinrel is mathrel{mkern-3mu}. Using mid and mathrel{|} is the same, but in this context mathrel{|} is better because mid might be used for a different symbol.



            Why are the other two bad? Because ! is not the right spacing.



            The good is just what's needed, because it gives a relation and adds no spaces in between.



            The best method avoids the little gap between the Relbar and mid. Look closely in the table below.



            documentclass{article}
            usepackage{amsmath}
            usepackage{booktabs}

            DeclareRobustCommand{xjoinrel}{mathrel{mkern-3.5mu}}

            renewcommand{models}{%
            mathrel{|}
            xjoinrel
            Relbar
            }
            newcommand{modeledby}{%
            Relbar
            xjoinrel
            mathrel{|}
            }
            newcommand{doublemodels}{%
            mathrel{|}
            xjoinrel
            Relbar
            xjoinrel
            mathrel{|}
            }

            begin{document}

            begin{tabular}{cc}
            toprule
            New & Old \
            midrule
            $Amodels B$ & $AmidjoinrelRelbar B$ \
            $Amodeledby B$ & $A Relbarjoinrelmid B$ \
            $Adoublemodels B$ & $A midjoinrelRelbarjoinrelmid B$ \
            bottomrule
            end{tabular}

            end{document}


            enter image description here






            share|improve this answer


























            • Eventually, are you saying the current models is not perfect?

              – CarLaTeX
              Jan 24 at 21:50






            • 2





              @CarLaTeX I dare to! ;-) Besides, there are better symbols in amssymb.

              – egreg
              Jan 24 at 22:01













            • It has been very difficult to choose which answer to accept. I accepted Henri's one because it is more focalized on the general problem rather than the specific symbol. Moreover: tex.meta.stackexchange.com/a/7463/101651 :)

              – CarLaTeX
              Jan 25 at 6:05
















            10














            The ugly



            newcommand{mymodel}{mathrel{modelsjoinrelmid}} 


            The bad



            newcommand{mymod}{mathrel{models!mid}} 
            newcommand{mymode}{models!mid}


            The good



            newcommand{foo}{modelsjoinrelmid}


            The best™



            DeclareRobustCommand{xjoinrel}{mathrel{mkern-3.5mu}}
            letmodelsrelax % undefine models
            DeclareRobustCommand{models}{mathrel{|}xjoinrelRelbar} %% YES!
            DeclareRobustCommand{mymod}{mathrel{|}xjoinrelRelbarxjoinrelmathrel{|}}


            Explanations



            TeX never adds space between two consecutive relation symbols. Since models is defined as mathrel{|}joinrelRelbar and all three are relation symbols, the first method has a redundant mathrel.



            The command joinrel is mathrel{mkern-3mu}. Using mid and mathrel{|} is the same, but in this context mathrel{|} is better because mid might be used for a different symbol.



            Why are the other two bad? Because ! is not the right spacing.



            The good is just what's needed, because it gives a relation and adds no spaces in between.



            The best method avoids the little gap between the Relbar and mid. Look closely in the table below.



            documentclass{article}
            usepackage{amsmath}
            usepackage{booktabs}

            DeclareRobustCommand{xjoinrel}{mathrel{mkern-3.5mu}}

            renewcommand{models}{%
            mathrel{|}
            xjoinrel
            Relbar
            }
            newcommand{modeledby}{%
            Relbar
            xjoinrel
            mathrel{|}
            }
            newcommand{doublemodels}{%
            mathrel{|}
            xjoinrel
            Relbar
            xjoinrel
            mathrel{|}
            }

            begin{document}

            begin{tabular}{cc}
            toprule
            New & Old \
            midrule
            $Amodels B$ & $AmidjoinrelRelbar B$ \
            $Amodeledby B$ & $A Relbarjoinrelmid B$ \
            $Adoublemodels B$ & $A midjoinrelRelbarjoinrelmid B$ \
            bottomrule
            end{tabular}

            end{document}


            enter image description here






            share|improve this answer


























            • Eventually, are you saying the current models is not perfect?

              – CarLaTeX
              Jan 24 at 21:50






            • 2





              @CarLaTeX I dare to! ;-) Besides, there are better symbols in amssymb.

              – egreg
              Jan 24 at 22:01













            • It has been very difficult to choose which answer to accept. I accepted Henri's one because it is more focalized on the general problem rather than the specific symbol. Moreover: tex.meta.stackexchange.com/a/7463/101651 :)

              – CarLaTeX
              Jan 25 at 6:05














            10












            10








            10







            The ugly



            newcommand{mymodel}{mathrel{modelsjoinrelmid}} 


            The bad



            newcommand{mymod}{mathrel{models!mid}} 
            newcommand{mymode}{models!mid}


            The good



            newcommand{foo}{modelsjoinrelmid}


            The best™



            DeclareRobustCommand{xjoinrel}{mathrel{mkern-3.5mu}}
            letmodelsrelax % undefine models
            DeclareRobustCommand{models}{mathrel{|}xjoinrelRelbar} %% YES!
            DeclareRobustCommand{mymod}{mathrel{|}xjoinrelRelbarxjoinrelmathrel{|}}


            Explanations



            TeX never adds space between two consecutive relation symbols. Since models is defined as mathrel{|}joinrelRelbar and all three are relation symbols, the first method has a redundant mathrel.



            The command joinrel is mathrel{mkern-3mu}. Using mid and mathrel{|} is the same, but in this context mathrel{|} is better because mid might be used for a different symbol.



            Why are the other two bad? Because ! is not the right spacing.



            The good is just what's needed, because it gives a relation and adds no spaces in between.



            The best method avoids the little gap between the Relbar and mid. Look closely in the table below.



            documentclass{article}
            usepackage{amsmath}
            usepackage{booktabs}

            DeclareRobustCommand{xjoinrel}{mathrel{mkern-3.5mu}}

            renewcommand{models}{%
            mathrel{|}
            xjoinrel
            Relbar
            }
            newcommand{modeledby}{%
            Relbar
            xjoinrel
            mathrel{|}
            }
            newcommand{doublemodels}{%
            mathrel{|}
            xjoinrel
            Relbar
            xjoinrel
            mathrel{|}
            }

            begin{document}

            begin{tabular}{cc}
            toprule
            New & Old \
            midrule
            $Amodels B$ & $AmidjoinrelRelbar B$ \
            $Amodeledby B$ & $A Relbarjoinrelmid B$ \
            $Adoublemodels B$ & $A midjoinrelRelbarjoinrelmid B$ \
            bottomrule
            end{tabular}

            end{document}


            enter image description here






            share|improve this answer















            The ugly



            newcommand{mymodel}{mathrel{modelsjoinrelmid}} 


            The bad



            newcommand{mymod}{mathrel{models!mid}} 
            newcommand{mymode}{models!mid}


            The good



            newcommand{foo}{modelsjoinrelmid}


            The best™



            DeclareRobustCommand{xjoinrel}{mathrel{mkern-3.5mu}}
            letmodelsrelax % undefine models
            DeclareRobustCommand{models}{mathrel{|}xjoinrelRelbar} %% YES!
            DeclareRobustCommand{mymod}{mathrel{|}xjoinrelRelbarxjoinrelmathrel{|}}


            Explanations



            TeX never adds space between two consecutive relation symbols. Since models is defined as mathrel{|}joinrelRelbar and all three are relation symbols, the first method has a redundant mathrel.



            The command joinrel is mathrel{mkern-3mu}. Using mid and mathrel{|} is the same, but in this context mathrel{|} is better because mid might be used for a different symbol.



            Why are the other two bad? Because ! is not the right spacing.



            The good is just what's needed, because it gives a relation and adds no spaces in between.



            The best method avoids the little gap between the Relbar and mid. Look closely in the table below.



            documentclass{article}
            usepackage{amsmath}
            usepackage{booktabs}

            DeclareRobustCommand{xjoinrel}{mathrel{mkern-3.5mu}}

            renewcommand{models}{%
            mathrel{|}
            xjoinrel
            Relbar
            }
            newcommand{modeledby}{%
            Relbar
            xjoinrel
            mathrel{|}
            }
            newcommand{doublemodels}{%
            mathrel{|}
            xjoinrel
            Relbar
            xjoinrel
            mathrel{|}
            }

            begin{document}

            begin{tabular}{cc}
            toprule
            New & Old \
            midrule
            $Amodels B$ & $AmidjoinrelRelbar B$ \
            $Amodeledby B$ & $A Relbarjoinrelmid B$ \
            $Adoublemodels B$ & $A midjoinrelRelbarjoinrelmid B$ \
            bottomrule
            end{tabular}

            end{document}


            enter image description here







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Jan 24 at 21:43

























            answered Jan 24 at 21:37









            egregegreg

            723k8719163219




            723k8719163219













            • Eventually, are you saying the current models is not perfect?

              – CarLaTeX
              Jan 24 at 21:50






            • 2





              @CarLaTeX I dare to! ;-) Besides, there are better symbols in amssymb.

              – egreg
              Jan 24 at 22:01













            • It has been very difficult to choose which answer to accept. I accepted Henri's one because it is more focalized on the general problem rather than the specific symbol. Moreover: tex.meta.stackexchange.com/a/7463/101651 :)

              – CarLaTeX
              Jan 25 at 6:05



















            • Eventually, are you saying the current models is not perfect?

              – CarLaTeX
              Jan 24 at 21:50






            • 2





              @CarLaTeX I dare to! ;-) Besides, there are better symbols in amssymb.

              – egreg
              Jan 24 at 22:01













            • It has been very difficult to choose which answer to accept. I accepted Henri's one because it is more focalized on the general problem rather than the specific symbol. Moreover: tex.meta.stackexchange.com/a/7463/101651 :)

              – CarLaTeX
              Jan 25 at 6:05

















            Eventually, are you saying the current models is not perfect?

            – CarLaTeX
            Jan 24 at 21:50





            Eventually, are you saying the current models is not perfect?

            – CarLaTeX
            Jan 24 at 21:50




            2




            2





            @CarLaTeX I dare to! ;-) Besides, there are better symbols in amssymb.

            – egreg
            Jan 24 at 22:01







            @CarLaTeX I dare to! ;-) Besides, there are better symbols in amssymb.

            – egreg
            Jan 24 at 22:01















            It has been very difficult to choose which answer to accept. I accepted Henri's one because it is more focalized on the general problem rather than the specific symbol. Moreover: tex.meta.stackexchange.com/a/7463/101651 :)

            – CarLaTeX
            Jan 25 at 6:05





            It has been very difficult to choose which answer to accept. I accepted Henri's one because it is more focalized on the general problem rather than the specific symbol. Moreover: tex.meta.stackexchange.com/a/7463/101651 :)

            – CarLaTeX
            Jan 25 at 6:05


















            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%2f471713%2fis-mathrel-always-needed%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

            Human spaceflight

            Can not write log (Is /dev/pts mounted?) - openpty in Ubuntu-on-Windows?

            張江高科駅