Size of subfigure fitting its content (tikzpicture)How can I access the size of a tikzpicture's bounding box outside the tikzpicture?Write information on aux file when using include to build documentLaTeX equivalent of ConTeXt buffersVenn diagrams, relative so size of its contentTikZ scaling graphic and adjust node position and keep font sizeWrong caption with subfigure and tikzpictureLine up nested tikz enviroments or how to get rid of themEqual size subfigureSize of figures within subfigure environment won't changeMaking a tikzpicture SubfigureSubcaption environment failed. All figures containing a subfigure crashing all of a suddenTikzpicture shifts subfigure environment

Is it inappropriate for a student to attend their mentor's dissertation defense?

Is there a hemisphere-neutral way of specifying a season?

CAST throwing error when run in stored procedure but not when run as raw query

Venezuelan girlfriend wants to travel the USA to be with me. What is the process?

Short story with a alien planet, government officials must wear exploding medallions

What is the idiomatic way to say "clothing fits"?

Why no variance term in Bayesian logistic regression?

Bullying boss launched a smear campaign and made me unemployable

Why is it a bad idea to hire a hitman to eliminate most corrupt politicians?

Extract rows of a table, that include less than x NULLs

iPad being using in wall mount battery swollen

Forgetting the musical notes while performing in concert

Can I run a new neutral wire to repair a broken circuit?

Determining Impedance With An Antenna Analyzer

What is a romance in Latin?

Why would the Red Woman birth a shadow if she worshipped the Lord of the Light?

How do I deal with an unproductive colleague in a small company?

Arrow those variables!

Intersection Puzzle

Why does this cyclic subgroup have only 4 subgroups?

Why do bosons tend to occupy the same state?

How does a predictive coding aid in lossless compression?

Can compressed videos be decoded back to their uncompresed original format?

Are there any examples of a variable being normally distributed that is *not* due to the Central Limit Theorem?



Size of subfigure fitting its content (tikzpicture)


How can I access the size of a tikzpicture's bounding box outside the tikzpicture?Write information on aux file when using include to build documentLaTeX equivalent of ConTeXt buffersVenn diagrams, relative so size of its contentTikZ scaling graphic and adjust node position and keep font sizeWrong caption with subfigure and tikzpictureLine up nested tikz enviroments or how to get rid of themEqual size subfigureSize of figures within subfigure environment won't changeMaking a tikzpicture SubfigureSubcaption environment failed. All figures containing a subfigure crashing all of a suddenTikzpicture shifts subfigure environment













2















How can I set the width of a subfigure to fit its content, i. e. a tikzpicture.



In my MWE I do not want to specify 0.1textwidth respectively 0.9textwidth, but instead I want the whitespace to be distributed equally around both subfigures.



documentclassarticle
usepackageshowframe
usepackagetikz
usepackagesubcaption

begindocument

beginfigure[ht]
hfill
beginsubfigure[b]0.1textwidth
centering
begintikzpicture
node[draw] (pd1) a;
endtikzpicture
caption
endsubfigure%
hfill
beginsubfigure[b]0.9textwidth
centering
begintikzpicture
node[draw] (b) at (0,0) b;
node[draw] (c) at (5,0) c;

draw (b) to (c);
endtikzpicture
caption
endsubfigure%
hfill
caption
endfigure

enddocument


I found this answer How can I access the size of a tikzpicture's bounding box outside the tikzpicture? but didn't read it in detail until now. I was wondering if my aim could be achieved easier.










share|improve this question


























    2















    How can I set the width of a subfigure to fit its content, i. e. a tikzpicture.



    In my MWE I do not want to specify 0.1textwidth respectively 0.9textwidth, but instead I want the whitespace to be distributed equally around both subfigures.



    documentclassarticle
    usepackageshowframe
    usepackagetikz
    usepackagesubcaption

    begindocument

    beginfigure[ht]
    hfill
    beginsubfigure[b]0.1textwidth
    centering
    begintikzpicture
    node[draw] (pd1) a;
    endtikzpicture
    caption
    endsubfigure%
    hfill
    beginsubfigure[b]0.9textwidth
    centering
    begintikzpicture
    node[draw] (b) at (0,0) b;
    node[draw] (c) at (5,0) c;

    draw (b) to (c);
    endtikzpicture
    caption
    endsubfigure%
    hfill
    caption
    endfigure

    enddocument


    I found this answer How can I access the size of a tikzpicture's bounding box outside the tikzpicture? but didn't read it in detail until now. I was wondering if my aim could be achieved easier.










    share|improve this question
























      2












      2








      2








      How can I set the width of a subfigure to fit its content, i. e. a tikzpicture.



      In my MWE I do not want to specify 0.1textwidth respectively 0.9textwidth, but instead I want the whitespace to be distributed equally around both subfigures.



      documentclassarticle
      usepackageshowframe
      usepackagetikz
      usepackagesubcaption

      begindocument

      beginfigure[ht]
      hfill
      beginsubfigure[b]0.1textwidth
      centering
      begintikzpicture
      node[draw] (pd1) a;
      endtikzpicture
      caption
      endsubfigure%
      hfill
      beginsubfigure[b]0.9textwidth
      centering
      begintikzpicture
      node[draw] (b) at (0,0) b;
      node[draw] (c) at (5,0) c;

      draw (b) to (c);
      endtikzpicture
      caption
      endsubfigure%
      hfill
      caption
      endfigure

      enddocument


      I found this answer How can I access the size of a tikzpicture's bounding box outside the tikzpicture? but didn't read it in detail until now. I was wondering if my aim could be achieved easier.










      share|improve this question














      How can I set the width of a subfigure to fit its content, i. e. a tikzpicture.



      In my MWE I do not want to specify 0.1textwidth respectively 0.9textwidth, but instead I want the whitespace to be distributed equally around both subfigures.



      documentclassarticle
      usepackageshowframe
      usepackagetikz
      usepackagesubcaption

      begindocument

      beginfigure[ht]
      hfill
      beginsubfigure[b]0.1textwidth
      centering
      begintikzpicture
      node[draw] (pd1) a;
      endtikzpicture
      caption
      endsubfigure%
      hfill
      beginsubfigure[b]0.9textwidth
      centering
      begintikzpicture
      node[draw] (b) at (0,0) b;
      node[draw] (c) at (5,0) c;

      draw (b) to (c);
      endtikzpicture
      caption
      endsubfigure%
      hfill
      caption
      endfigure

      enddocument


      I found this answer How can I access the size of a tikzpicture's bounding box outside the tikzpicture? but didn't read it in detail until now. I was wondering if my aim could be achieved easier.







      tikz-pgf subfloats






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 1 hour ago









      BenBen

      8801520




      8801520




















          2 Answers
          2






          active

          oldest

          votes


















          2














          You could place the tikzpicture in a savebox and measure its size. This size can then be used for the subfigure. The following example shows how to do this for the right hand image. In the same way you could create another box for the other image.



          documentclassarticle
          usepackageshowframe
          usepackagetikz
          usepackagesubcaption

          newsaveboxmybox
          newlengthmylength

          begindocument

          saveboxmyboxbegintikzpicture
          node[draw] (b) at (0,0) b;
          node[draw] (c) at (5,0) c;

          draw (b) to (c);
          endtikzpicture

          settowidthmylengthuseboxmybox

          beginfigure[ht]
          hfill
          beginsubfigure[b]0.1textwidth
          centering
          begintikzpicture
          node[draw] (pd1) a;
          endtikzpicture
          caption
          endsubfigure%
          hfill
          beginsubfigure[b]mylength
          centering
          useboxmybox
          caption
          endsubfigure%
          hfill
          caption
          endfigure

          enddocument





          share|improve this answer























          • Maybe you should add something after the last hfill, e.g. hfillvphantomx to move the right figure away from the right page border?

            – marmot
            1 hour ago


















          1














          I think that @samcarter's nice proposal is the way to go. This is only if you need to access the nodes later (with remember picture), in which case saveboxes may be inconvenient. This proposal measures the widths of the tikzpictures and writes them to the aux files such that they get used in the next run. Conceptually it is the same as e.g. this nice answer.



          documentclassarticle
          usepackageshowframe
          usepackagetikz
          usetikzlibrarycalc
          usepackagesubcaption
          ifdefinedfigwidthA
          else
          xdeffigwidthA2cm
          fi
          ifdefinedfigwidthB
          else
          xdeffigwidthB2cm
          fi
          tikzsetsave tikzpic width in/.style=execute at end picture=
          path let p1=($(current bounding box.east)-(current bounding box.west)$)
          in pgfextraxdef#1x1;
          begindocument

          beginfigure[ht]
          hfill
          beginsubfigure[b]figwidthA
          centering
          begintikzpicture[save tikzpic width in=figwidthA]
          node[draw] (pd1) a;
          endtikzpicture
          caption
          endsubfigure%
          hfill%
          beginsubfigure[b]figwidthB
          centering
          begintikzpicture[save tikzpic width in=figwidthB]
          node[draw] (b) at (0,0) b;
          node[draw] (c) at (5,0) c;

          draw (b) to (c);
          endtikzpicture
          caption
          endsubfigure%
          hfillvphantomx
          caption
          endfigure
          makeatletter
          immediatewrite@mainauxxdefstringfigwidthAfigwidthArelax
          immediatewrite@mainauxxdefstringfigwidthBfigwidthBrelax
          makeatother
          enddocument


          enter image description here






          share|improve this answer























          • Is there a reason you use brackets around vphantom?

            – Ben
            51 mins ago











          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%2f483067%2fsize-of-subfigure-fitting-its-content-tikzpicture%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









          2














          You could place the tikzpicture in a savebox and measure its size. This size can then be used for the subfigure. The following example shows how to do this for the right hand image. In the same way you could create another box for the other image.



          documentclassarticle
          usepackageshowframe
          usepackagetikz
          usepackagesubcaption

          newsaveboxmybox
          newlengthmylength

          begindocument

          saveboxmyboxbegintikzpicture
          node[draw] (b) at (0,0) b;
          node[draw] (c) at (5,0) c;

          draw (b) to (c);
          endtikzpicture

          settowidthmylengthuseboxmybox

          beginfigure[ht]
          hfill
          beginsubfigure[b]0.1textwidth
          centering
          begintikzpicture
          node[draw] (pd1) a;
          endtikzpicture
          caption
          endsubfigure%
          hfill
          beginsubfigure[b]mylength
          centering
          useboxmybox
          caption
          endsubfigure%
          hfill
          caption
          endfigure

          enddocument





          share|improve this answer























          • Maybe you should add something after the last hfill, e.g. hfillvphantomx to move the right figure away from the right page border?

            – marmot
            1 hour ago















          2














          You could place the tikzpicture in a savebox and measure its size. This size can then be used for the subfigure. The following example shows how to do this for the right hand image. In the same way you could create another box for the other image.



          documentclassarticle
          usepackageshowframe
          usepackagetikz
          usepackagesubcaption

          newsaveboxmybox
          newlengthmylength

          begindocument

          saveboxmyboxbegintikzpicture
          node[draw] (b) at (0,0) b;
          node[draw] (c) at (5,0) c;

          draw (b) to (c);
          endtikzpicture

          settowidthmylengthuseboxmybox

          beginfigure[ht]
          hfill
          beginsubfigure[b]0.1textwidth
          centering
          begintikzpicture
          node[draw] (pd1) a;
          endtikzpicture
          caption
          endsubfigure%
          hfill
          beginsubfigure[b]mylength
          centering
          useboxmybox
          caption
          endsubfigure%
          hfill
          caption
          endfigure

          enddocument





          share|improve this answer























          • Maybe you should add something after the last hfill, e.g. hfillvphantomx to move the right figure away from the right page border?

            – marmot
            1 hour ago













          2












          2








          2







          You could place the tikzpicture in a savebox and measure its size. This size can then be used for the subfigure. The following example shows how to do this for the right hand image. In the same way you could create another box for the other image.



          documentclassarticle
          usepackageshowframe
          usepackagetikz
          usepackagesubcaption

          newsaveboxmybox
          newlengthmylength

          begindocument

          saveboxmyboxbegintikzpicture
          node[draw] (b) at (0,0) b;
          node[draw] (c) at (5,0) c;

          draw (b) to (c);
          endtikzpicture

          settowidthmylengthuseboxmybox

          beginfigure[ht]
          hfill
          beginsubfigure[b]0.1textwidth
          centering
          begintikzpicture
          node[draw] (pd1) a;
          endtikzpicture
          caption
          endsubfigure%
          hfill
          beginsubfigure[b]mylength
          centering
          useboxmybox
          caption
          endsubfigure%
          hfill
          caption
          endfigure

          enddocument





          share|improve this answer













          You could place the tikzpicture in a savebox and measure its size. This size can then be used for the subfigure. The following example shows how to do this for the right hand image. In the same way you could create another box for the other image.



          documentclassarticle
          usepackageshowframe
          usepackagetikz
          usepackagesubcaption

          newsaveboxmybox
          newlengthmylength

          begindocument

          saveboxmyboxbegintikzpicture
          node[draw] (b) at (0,0) b;
          node[draw] (c) at (5,0) c;

          draw (b) to (c);
          endtikzpicture

          settowidthmylengthuseboxmybox

          beginfigure[ht]
          hfill
          beginsubfigure[b]0.1textwidth
          centering
          begintikzpicture
          node[draw] (pd1) a;
          endtikzpicture
          caption
          endsubfigure%
          hfill
          beginsubfigure[b]mylength
          centering
          useboxmybox
          caption
          endsubfigure%
          hfill
          caption
          endfigure

          enddocument






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 1 hour ago









          samcartersamcarter

          93.5k7105303




          93.5k7105303












          • Maybe you should add something after the last hfill, e.g. hfillvphantomx to move the right figure away from the right page border?

            – marmot
            1 hour ago

















          • Maybe you should add something after the last hfill, e.g. hfillvphantomx to move the right figure away from the right page border?

            – marmot
            1 hour ago
















          Maybe you should add something after the last hfill, e.g. hfillvphantomx to move the right figure away from the right page border?

          – marmot
          1 hour ago





          Maybe you should add something after the last hfill, e.g. hfillvphantomx to move the right figure away from the right page border?

          – marmot
          1 hour ago











          1














          I think that @samcarter's nice proposal is the way to go. This is only if you need to access the nodes later (with remember picture), in which case saveboxes may be inconvenient. This proposal measures the widths of the tikzpictures and writes them to the aux files such that they get used in the next run. Conceptually it is the same as e.g. this nice answer.



          documentclassarticle
          usepackageshowframe
          usepackagetikz
          usetikzlibrarycalc
          usepackagesubcaption
          ifdefinedfigwidthA
          else
          xdeffigwidthA2cm
          fi
          ifdefinedfigwidthB
          else
          xdeffigwidthB2cm
          fi
          tikzsetsave tikzpic width in/.style=execute at end picture=
          path let p1=($(current bounding box.east)-(current bounding box.west)$)
          in pgfextraxdef#1x1;
          begindocument

          beginfigure[ht]
          hfill
          beginsubfigure[b]figwidthA
          centering
          begintikzpicture[save tikzpic width in=figwidthA]
          node[draw] (pd1) a;
          endtikzpicture
          caption
          endsubfigure%
          hfill%
          beginsubfigure[b]figwidthB
          centering
          begintikzpicture[save tikzpic width in=figwidthB]
          node[draw] (b) at (0,0) b;
          node[draw] (c) at (5,0) c;

          draw (b) to (c);
          endtikzpicture
          caption
          endsubfigure%
          hfillvphantomx
          caption
          endfigure
          makeatletter
          immediatewrite@mainauxxdefstringfigwidthAfigwidthArelax
          immediatewrite@mainauxxdefstringfigwidthBfigwidthBrelax
          makeatother
          enddocument


          enter image description here






          share|improve this answer























          • Is there a reason you use brackets around vphantom?

            – Ben
            51 mins ago















          1














          I think that @samcarter's nice proposal is the way to go. This is only if you need to access the nodes later (with remember picture), in which case saveboxes may be inconvenient. This proposal measures the widths of the tikzpictures and writes them to the aux files such that they get used in the next run. Conceptually it is the same as e.g. this nice answer.



          documentclassarticle
          usepackageshowframe
          usepackagetikz
          usetikzlibrarycalc
          usepackagesubcaption
          ifdefinedfigwidthA
          else
          xdeffigwidthA2cm
          fi
          ifdefinedfigwidthB
          else
          xdeffigwidthB2cm
          fi
          tikzsetsave tikzpic width in/.style=execute at end picture=
          path let p1=($(current bounding box.east)-(current bounding box.west)$)
          in pgfextraxdef#1x1;
          begindocument

          beginfigure[ht]
          hfill
          beginsubfigure[b]figwidthA
          centering
          begintikzpicture[save tikzpic width in=figwidthA]
          node[draw] (pd1) a;
          endtikzpicture
          caption
          endsubfigure%
          hfill%
          beginsubfigure[b]figwidthB
          centering
          begintikzpicture[save tikzpic width in=figwidthB]
          node[draw] (b) at (0,0) b;
          node[draw] (c) at (5,0) c;

          draw (b) to (c);
          endtikzpicture
          caption
          endsubfigure%
          hfillvphantomx
          caption
          endfigure
          makeatletter
          immediatewrite@mainauxxdefstringfigwidthAfigwidthArelax
          immediatewrite@mainauxxdefstringfigwidthBfigwidthBrelax
          makeatother
          enddocument


          enter image description here






          share|improve this answer























          • Is there a reason you use brackets around vphantom?

            – Ben
            51 mins ago













          1












          1








          1







          I think that @samcarter's nice proposal is the way to go. This is only if you need to access the nodes later (with remember picture), in which case saveboxes may be inconvenient. This proposal measures the widths of the tikzpictures and writes them to the aux files such that they get used in the next run. Conceptually it is the same as e.g. this nice answer.



          documentclassarticle
          usepackageshowframe
          usepackagetikz
          usetikzlibrarycalc
          usepackagesubcaption
          ifdefinedfigwidthA
          else
          xdeffigwidthA2cm
          fi
          ifdefinedfigwidthB
          else
          xdeffigwidthB2cm
          fi
          tikzsetsave tikzpic width in/.style=execute at end picture=
          path let p1=($(current bounding box.east)-(current bounding box.west)$)
          in pgfextraxdef#1x1;
          begindocument

          beginfigure[ht]
          hfill
          beginsubfigure[b]figwidthA
          centering
          begintikzpicture[save tikzpic width in=figwidthA]
          node[draw] (pd1) a;
          endtikzpicture
          caption
          endsubfigure%
          hfill%
          beginsubfigure[b]figwidthB
          centering
          begintikzpicture[save tikzpic width in=figwidthB]
          node[draw] (b) at (0,0) b;
          node[draw] (c) at (5,0) c;

          draw (b) to (c);
          endtikzpicture
          caption
          endsubfigure%
          hfillvphantomx
          caption
          endfigure
          makeatletter
          immediatewrite@mainauxxdefstringfigwidthAfigwidthArelax
          immediatewrite@mainauxxdefstringfigwidthBfigwidthBrelax
          makeatother
          enddocument


          enter image description here






          share|improve this answer













          I think that @samcarter's nice proposal is the way to go. This is only if you need to access the nodes later (with remember picture), in which case saveboxes may be inconvenient. This proposal measures the widths of the tikzpictures and writes them to the aux files such that they get used in the next run. Conceptually it is the same as e.g. this nice answer.



          documentclassarticle
          usepackageshowframe
          usepackagetikz
          usetikzlibrarycalc
          usepackagesubcaption
          ifdefinedfigwidthA
          else
          xdeffigwidthA2cm
          fi
          ifdefinedfigwidthB
          else
          xdeffigwidthB2cm
          fi
          tikzsetsave tikzpic width in/.style=execute at end picture=
          path let p1=($(current bounding box.east)-(current bounding box.west)$)
          in pgfextraxdef#1x1;
          begindocument

          beginfigure[ht]
          hfill
          beginsubfigure[b]figwidthA
          centering
          begintikzpicture[save tikzpic width in=figwidthA]
          node[draw] (pd1) a;
          endtikzpicture
          caption
          endsubfigure%
          hfill%
          beginsubfigure[b]figwidthB
          centering
          begintikzpicture[save tikzpic width in=figwidthB]
          node[draw] (b) at (0,0) b;
          node[draw] (c) at (5,0) c;

          draw (b) to (c);
          endtikzpicture
          caption
          endsubfigure%
          hfillvphantomx
          caption
          endfigure
          makeatletter
          immediatewrite@mainauxxdefstringfigwidthAfigwidthArelax
          immediatewrite@mainauxxdefstringfigwidthBfigwidthBrelax
          makeatother
          enddocument


          enter image description here







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 1 hour ago









          marmotmarmot

          114k5145276




          114k5145276












          • Is there a reason you use brackets around vphantom?

            – Ben
            51 mins ago

















          • Is there a reason you use brackets around vphantom?

            – Ben
            51 mins ago
















          Is there a reason you use brackets around vphantom?

          – Ben
          51 mins ago





          Is there a reason you use brackets around vphantom?

          – Ben
          51 mins ago

















          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%2f483067%2fsize-of-subfigure-fitting-its-content-tikzpicture%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

          Dapidodigma demeter Subspecies | Notae | Tabula navigationisDapidodigmaAfrotropical Butterflies: Lycaenidae - Subtribe IolainaAmplifica

          Constantinus Vanšenkin Nexus externi | Tabula navigationisБольшая российская энциклопедияAmplifica

          Gaius Norbanus Flaccus (consul 38 a.C.n.) Index De gente | De cursu honorum | Notae | Fontes | Si vis plura legere | Tabula navigationisHic legere potes