Relationship between strut and baselineskip












3















Here, it is said that a strut is defined as:



rule[-.3baselineskip]{0pt}{baselineskip}


However, if I do:



newlength{strutheight}
settoheight{strutheight}{strut}printlength{strutheight}
printlength{baselineskip}


It prints:



8.39996pt 12.0pt


8.39996 is equal to 0.7*12. However, what I don't understand is that according to its definition the height of the strut should be baselineskip, because -.3baselineskip only refers to a vertical alignment offset. Why does settoheight on a strut produces this behaviour?










share|improve this question



























    3















    Here, it is said that a strut is defined as:



    rule[-.3baselineskip]{0pt}{baselineskip}


    However, if I do:



    newlength{strutheight}
    settoheight{strutheight}{strut}printlength{strutheight}
    printlength{baselineskip}


    It prints:



    8.39996pt 12.0pt


    8.39996 is equal to 0.7*12. However, what I don't understand is that according to its definition the height of the strut should be baselineskip, because -.3baselineskip only refers to a vertical alignment offset. Why does settoheight on a strut produces this behaviour?










    share|improve this question

























      3












      3








      3








      Here, it is said that a strut is defined as:



      rule[-.3baselineskip]{0pt}{baselineskip}


      However, if I do:



      newlength{strutheight}
      settoheight{strutheight}{strut}printlength{strutheight}
      printlength{baselineskip}


      It prints:



      8.39996pt 12.0pt


      8.39996 is equal to 0.7*12. However, what I don't understand is that according to its definition the height of the strut should be baselineskip, because -.3baselineskip only refers to a vertical alignment offset. Why does settoheight on a strut produces this behaviour?










      share|improve this question














      Here, it is said that a strut is defined as:



      rule[-.3baselineskip]{0pt}{baselineskip}


      However, if I do:



      newlength{strutheight}
      settoheight{strutheight}{strut}printlength{strutheight}
      printlength{baselineskip}


      It prints:



      8.39996pt 12.0pt


      8.39996 is equal to 0.7*12. However, what I don't understand is that according to its definition the height of the strut should be baselineskip, because -.3baselineskip only refers to a vertical alignment offset. Why does settoheight on a strut produces this behaviour?







      vertical-alignment baseline calc strut






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 2 hours ago









      VincentVincent

      1,70421939




      1,70421939






















          2 Answers
          2






          active

          oldest

          votes


















          5














          The height of the whole strut is baselineskip, however it is lowered by 0.3baselineskip form the baseline. Its depth plus its height totals baselineskip:



          documentclass{article}
          begin{document}
          newlength{strutheight}
          newlength{strutdepth}
          settoheight{strutheight}{strut}
          settodepth{strutdepth}{strut}
          $thestrutheight+thestrutdepth=thebaselineskip$
          end{document}


          this prints 8.39996pt + 3.60004pt = 12.0pt.



          In TeX, the “height” of a box is not its total height, but the height above the baseline, and the “depth” is the amount that box goes below that baseline. And when you do settoheight you get only the height of the box, not the total height.



          You can draw the strut and its height and depth to see:




          enter image description here




          documentclass{article}
          begin{document}
          fboxsep0pt
          fboxrule0.1pt

          fbox{strut}
          fbox{rule{0pt}{0.7baselineskip}}
          fbox{rule[-0.3baselineskip]{0pt}{0.3baselineskip}}
          end{document}





          share|improve this answer































            1














            Well, the definition of strut is



            % latex.ltx, line 594:
            defstrut{relaxifmmodecopystrutboxelseunhcopystrutboxfi}


            The code rule[-0.3baselineskip]{0pt}{baselineskip} is a less efficient way to say unhcopystrutbox, but amounts to essentially the same. Part of the strut is below the baseline, to cope with characters with descenders like p or y.



            The strutbox is updated whenever a fontsize command is processed:



            % latex.ltx, line 2808:
            defset@fontsize#1#2#3{%
            @defaultunits@tempdimb#2ptrelax@nnil
            edeff@size{strip@pt@tempdimb}%
            @defaultunits@tempskipa#3ptrelax@nnil
            edeff@baselineskip{the@tempskipa}%
            edeff@linespread{#1}%
            letbaselinestretchf@linespread
            defsize@update{%
            baselineskipf@baselineskiprelax
            baselineskipf@linespreadbaselineskip
            normalbaselineskipbaselineskip
            setboxstrutboxhbox{%
            vrule@height.7baselineskip
            @depth.3baselineskip
            @widthz@}%
            letsize@updaterelax}%
            }


            So the strutbox is a box containing a zero width rule, with height 70% of the baseline skip and depth 30% of the baseline skip.



            You can access the current dimensions as htstrutbox and dpstrutbox:



            documentclass{article}
            begin{document}

            thehtstrutbox (height)

            thedpstrutbox (depth)

            thedimexprhtstrutbox+dpstrutbox (total)

            thebaselineskip (baselineskip)

            end{document}


            enter image description here






            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%2f487845%2frelationship-between-strut-and-baselineskip%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









              5














              The height of the whole strut is baselineskip, however it is lowered by 0.3baselineskip form the baseline. Its depth plus its height totals baselineskip:



              documentclass{article}
              begin{document}
              newlength{strutheight}
              newlength{strutdepth}
              settoheight{strutheight}{strut}
              settodepth{strutdepth}{strut}
              $thestrutheight+thestrutdepth=thebaselineskip$
              end{document}


              this prints 8.39996pt + 3.60004pt = 12.0pt.



              In TeX, the “height” of a box is not its total height, but the height above the baseline, and the “depth” is the amount that box goes below that baseline. And when you do settoheight you get only the height of the box, not the total height.



              You can draw the strut and its height and depth to see:




              enter image description here




              documentclass{article}
              begin{document}
              fboxsep0pt
              fboxrule0.1pt

              fbox{strut}
              fbox{rule{0pt}{0.7baselineskip}}
              fbox{rule[-0.3baselineskip]{0pt}{0.3baselineskip}}
              end{document}





              share|improve this answer




























                5














                The height of the whole strut is baselineskip, however it is lowered by 0.3baselineskip form the baseline. Its depth plus its height totals baselineskip:



                documentclass{article}
                begin{document}
                newlength{strutheight}
                newlength{strutdepth}
                settoheight{strutheight}{strut}
                settodepth{strutdepth}{strut}
                $thestrutheight+thestrutdepth=thebaselineskip$
                end{document}


                this prints 8.39996pt + 3.60004pt = 12.0pt.



                In TeX, the “height” of a box is not its total height, but the height above the baseline, and the “depth” is the amount that box goes below that baseline. And when you do settoheight you get only the height of the box, not the total height.



                You can draw the strut and its height and depth to see:




                enter image description here




                documentclass{article}
                begin{document}
                fboxsep0pt
                fboxrule0.1pt

                fbox{strut}
                fbox{rule{0pt}{0.7baselineskip}}
                fbox{rule[-0.3baselineskip]{0pt}{0.3baselineskip}}
                end{document}





                share|improve this answer


























                  5












                  5








                  5







                  The height of the whole strut is baselineskip, however it is lowered by 0.3baselineskip form the baseline. Its depth plus its height totals baselineskip:



                  documentclass{article}
                  begin{document}
                  newlength{strutheight}
                  newlength{strutdepth}
                  settoheight{strutheight}{strut}
                  settodepth{strutdepth}{strut}
                  $thestrutheight+thestrutdepth=thebaselineskip$
                  end{document}


                  this prints 8.39996pt + 3.60004pt = 12.0pt.



                  In TeX, the “height” of a box is not its total height, but the height above the baseline, and the “depth” is the amount that box goes below that baseline. And when you do settoheight you get only the height of the box, not the total height.



                  You can draw the strut and its height and depth to see:




                  enter image description here




                  documentclass{article}
                  begin{document}
                  fboxsep0pt
                  fboxrule0.1pt

                  fbox{strut}
                  fbox{rule{0pt}{0.7baselineskip}}
                  fbox{rule[-0.3baselineskip]{0pt}{0.3baselineskip}}
                  end{document}





                  share|improve this answer













                  The height of the whole strut is baselineskip, however it is lowered by 0.3baselineskip form the baseline. Its depth plus its height totals baselineskip:



                  documentclass{article}
                  begin{document}
                  newlength{strutheight}
                  newlength{strutdepth}
                  settoheight{strutheight}{strut}
                  settodepth{strutdepth}{strut}
                  $thestrutheight+thestrutdepth=thebaselineskip$
                  end{document}


                  this prints 8.39996pt + 3.60004pt = 12.0pt.



                  In TeX, the “height” of a box is not its total height, but the height above the baseline, and the “depth” is the amount that box goes below that baseline. And when you do settoheight you get only the height of the box, not the total height.



                  You can draw the strut and its height and depth to see:




                  enter image description here




                  documentclass{article}
                  begin{document}
                  fboxsep0pt
                  fboxrule0.1pt

                  fbox{strut}
                  fbox{rule{0pt}{0.7baselineskip}}
                  fbox{rule[-0.3baselineskip]{0pt}{0.3baselineskip}}
                  end{document}






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 2 hours ago









                  Phelype OleinikPhelype Oleinik

                  26.2k54791




                  26.2k54791























                      1














                      Well, the definition of strut is



                      % latex.ltx, line 594:
                      defstrut{relaxifmmodecopystrutboxelseunhcopystrutboxfi}


                      The code rule[-0.3baselineskip]{0pt}{baselineskip} is a less efficient way to say unhcopystrutbox, but amounts to essentially the same. Part of the strut is below the baseline, to cope with characters with descenders like p or y.



                      The strutbox is updated whenever a fontsize command is processed:



                      % latex.ltx, line 2808:
                      defset@fontsize#1#2#3{%
                      @defaultunits@tempdimb#2ptrelax@nnil
                      edeff@size{strip@pt@tempdimb}%
                      @defaultunits@tempskipa#3ptrelax@nnil
                      edeff@baselineskip{the@tempskipa}%
                      edeff@linespread{#1}%
                      letbaselinestretchf@linespread
                      defsize@update{%
                      baselineskipf@baselineskiprelax
                      baselineskipf@linespreadbaselineskip
                      normalbaselineskipbaselineskip
                      setboxstrutboxhbox{%
                      vrule@height.7baselineskip
                      @depth.3baselineskip
                      @widthz@}%
                      letsize@updaterelax}%
                      }


                      So the strutbox is a box containing a zero width rule, with height 70% of the baseline skip and depth 30% of the baseline skip.



                      You can access the current dimensions as htstrutbox and dpstrutbox:



                      documentclass{article}
                      begin{document}

                      thehtstrutbox (height)

                      thedpstrutbox (depth)

                      thedimexprhtstrutbox+dpstrutbox (total)

                      thebaselineskip (baselineskip)

                      end{document}


                      enter image description here






                      share|improve this answer




























                        1














                        Well, the definition of strut is



                        % latex.ltx, line 594:
                        defstrut{relaxifmmodecopystrutboxelseunhcopystrutboxfi}


                        The code rule[-0.3baselineskip]{0pt}{baselineskip} is a less efficient way to say unhcopystrutbox, but amounts to essentially the same. Part of the strut is below the baseline, to cope with characters with descenders like p or y.



                        The strutbox is updated whenever a fontsize command is processed:



                        % latex.ltx, line 2808:
                        defset@fontsize#1#2#3{%
                        @defaultunits@tempdimb#2ptrelax@nnil
                        edeff@size{strip@pt@tempdimb}%
                        @defaultunits@tempskipa#3ptrelax@nnil
                        edeff@baselineskip{the@tempskipa}%
                        edeff@linespread{#1}%
                        letbaselinestretchf@linespread
                        defsize@update{%
                        baselineskipf@baselineskiprelax
                        baselineskipf@linespreadbaselineskip
                        normalbaselineskipbaselineskip
                        setboxstrutboxhbox{%
                        vrule@height.7baselineskip
                        @depth.3baselineskip
                        @widthz@}%
                        letsize@updaterelax}%
                        }


                        So the strutbox is a box containing a zero width rule, with height 70% of the baseline skip and depth 30% of the baseline skip.



                        You can access the current dimensions as htstrutbox and dpstrutbox:



                        documentclass{article}
                        begin{document}

                        thehtstrutbox (height)

                        thedpstrutbox (depth)

                        thedimexprhtstrutbox+dpstrutbox (total)

                        thebaselineskip (baselineskip)

                        end{document}


                        enter image description here






                        share|improve this answer


























                          1












                          1








                          1







                          Well, the definition of strut is



                          % latex.ltx, line 594:
                          defstrut{relaxifmmodecopystrutboxelseunhcopystrutboxfi}


                          The code rule[-0.3baselineskip]{0pt}{baselineskip} is a less efficient way to say unhcopystrutbox, but amounts to essentially the same. Part of the strut is below the baseline, to cope with characters with descenders like p or y.



                          The strutbox is updated whenever a fontsize command is processed:



                          % latex.ltx, line 2808:
                          defset@fontsize#1#2#3{%
                          @defaultunits@tempdimb#2ptrelax@nnil
                          edeff@size{strip@pt@tempdimb}%
                          @defaultunits@tempskipa#3ptrelax@nnil
                          edeff@baselineskip{the@tempskipa}%
                          edeff@linespread{#1}%
                          letbaselinestretchf@linespread
                          defsize@update{%
                          baselineskipf@baselineskiprelax
                          baselineskipf@linespreadbaselineskip
                          normalbaselineskipbaselineskip
                          setboxstrutboxhbox{%
                          vrule@height.7baselineskip
                          @depth.3baselineskip
                          @widthz@}%
                          letsize@updaterelax}%
                          }


                          So the strutbox is a box containing a zero width rule, with height 70% of the baseline skip and depth 30% of the baseline skip.



                          You can access the current dimensions as htstrutbox and dpstrutbox:



                          documentclass{article}
                          begin{document}

                          thehtstrutbox (height)

                          thedpstrutbox (depth)

                          thedimexprhtstrutbox+dpstrutbox (total)

                          thebaselineskip (baselineskip)

                          end{document}


                          enter image description here






                          share|improve this answer













                          Well, the definition of strut is



                          % latex.ltx, line 594:
                          defstrut{relaxifmmodecopystrutboxelseunhcopystrutboxfi}


                          The code rule[-0.3baselineskip]{0pt}{baselineskip} is a less efficient way to say unhcopystrutbox, but amounts to essentially the same. Part of the strut is below the baseline, to cope with characters with descenders like p or y.



                          The strutbox is updated whenever a fontsize command is processed:



                          % latex.ltx, line 2808:
                          defset@fontsize#1#2#3{%
                          @defaultunits@tempdimb#2ptrelax@nnil
                          edeff@size{strip@pt@tempdimb}%
                          @defaultunits@tempskipa#3ptrelax@nnil
                          edeff@baselineskip{the@tempskipa}%
                          edeff@linespread{#1}%
                          letbaselinestretchf@linespread
                          defsize@update{%
                          baselineskipf@baselineskiprelax
                          baselineskipf@linespreadbaselineskip
                          normalbaselineskipbaselineskip
                          setboxstrutboxhbox{%
                          vrule@height.7baselineskip
                          @depth.3baselineskip
                          @widthz@}%
                          letsize@updaterelax}%
                          }


                          So the strutbox is a box containing a zero width rule, with height 70% of the baseline skip and depth 30% of the baseline skip.



                          You can access the current dimensions as htstrutbox and dpstrutbox:



                          documentclass{article}
                          begin{document}

                          thehtstrutbox (height)

                          thedpstrutbox (depth)

                          thedimexprhtstrutbox+dpstrutbox (total)

                          thebaselineskip (baselineskip)

                          end{document}


                          enter image description here







                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered 1 hour ago









                          egregegreg

                          737k8919373265




                          737k8919373265






























                              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%2f487845%2frelationship-between-strut-and-baselineskip%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

                              數位音樂下載

                              When can things happen in Etherscan, such as the picture below?

                              格利澤436b