How to use Tikz to calculate and use successive color values with text?











up vote
8
down vote

favorite
1












I'd like to use Tikz to algorithmically generate some text that has a color value based on calculations. Take the following, for example:



  documentclass{standalone}
usepackage{tikz}
begin{document}
begin{tikzpicture}
foreach i in {0, 1, ..., 10} {
draw (i, 0) node {textcolor[gray]{0.5}A};
}
end{tikzpicture}
end{document}


This displays a row of "A"s in a gray:



enter image description here



How do I go about calculating the 0.5 value to, for example, display this set of "A"s in varying levels of gray, such as a black to white gradient? Could I use this same method to calculate arbitrary RGB values?










share|improve this question


























    up vote
    8
    down vote

    favorite
    1












    I'd like to use Tikz to algorithmically generate some text that has a color value based on calculations. Take the following, for example:



      documentclass{standalone}
    usepackage{tikz}
    begin{document}
    begin{tikzpicture}
    foreach i in {0, 1, ..., 10} {
    draw (i, 0) node {textcolor[gray]{0.5}A};
    }
    end{tikzpicture}
    end{document}


    This displays a row of "A"s in a gray:



    enter image description here



    How do I go about calculating the 0.5 value to, for example, display this set of "A"s in varying levels of gray, such as a black to white gradient? Could I use this same method to calculate arbitrary RGB values?










    share|improve this question
























      up vote
      8
      down vote

      favorite
      1









      up vote
      8
      down vote

      favorite
      1






      1





      I'd like to use Tikz to algorithmically generate some text that has a color value based on calculations. Take the following, for example:



        documentclass{standalone}
      usepackage{tikz}
      begin{document}
      begin{tikzpicture}
      foreach i in {0, 1, ..., 10} {
      draw (i, 0) node {textcolor[gray]{0.5}A};
      }
      end{tikzpicture}
      end{document}


      This displays a row of "A"s in a gray:



      enter image description here



      How do I go about calculating the 0.5 value to, for example, display this set of "A"s in varying levels of gray, such as a black to white gradient? Could I use this same method to calculate arbitrary RGB values?










      share|improve this question













      I'd like to use Tikz to algorithmically generate some text that has a color value based on calculations. Take the following, for example:



        documentclass{standalone}
      usepackage{tikz}
      begin{document}
      begin{tikzpicture}
      foreach i in {0, 1, ..., 10} {
      draw (i, 0) node {textcolor[gray]{0.5}A};
      }
      end{tikzpicture}
      end{document}


      This displays a row of "A"s in a gray:



      enter image description here



      How do I go about calculating the 0.5 value to, for example, display this set of "A"s in varying levels of gray, such as a black to white gradient? Could I use this same method to calculate arbitrary RGB values?







      tikz-pgf color






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 21 at 15:28









      Roxy

      3465




      3465






















          4 Answers
          4






          active

          oldest

          votes

















          up vote
          8
          down vote



          accepted










          Yes, you can vary the gray levels, and the following can be used also to general non-gray colors.



          documentclass{standalone}
          usepackage{tikz}
          begin{document}
          begin{tikzpicture}
          foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
          draw (i, 0) node[text=gray!j!white] {A};
          }
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer




























            up vote
            6
            down vote













            Just for fun, another foreach solution:



            documentclass{standalone}
            usepackage{tikz}
            begin{document}
            begin{tikzpicture}
            foreach i [count=j] in {0, 10, ..., 100} {
            draw (j, 0) node[text=blue!i!red] {A};
            }
            end{tikzpicture}
            end{document}


            enter image description here






            share|improve this answer




























              up vote
              5
              down vote













              You can evaluate a variable within the foreach loop itself (see page 904 of 3.0.1a manual).



              Here since you want to go from black to white, you can do:



              result



              documentclass{standalone}
              usepackage{tikz}
              begin{document}
              begin{tikzpicture}
              foreach i [evaluate=i as gradient using 100-i*10] in {0, 1, ..., 10} {
              draw (i, 0) node[text=black!gradient] {A};
              }
              end{tikzpicture}
              end{document}





              share|improve this answer




























                up vote
                4
                down vote













                A slightly different syntax than what marmot proposed, but with the same effects



                documentclass[tikz,border=3.14pt]{standalone}
                begin{document}
                begin{tikzpicture}
                draw foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                (i, 0) node[text=gray!j!white] {A}
                };
                end{tikzpicture}
                end{document}





                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',
                  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%2f461139%2fhow-to-use-tikz-to-calculate-and-use-successive-color-values-with-text%23new-answer', 'question_page');
                  }
                  );

                  Post as a guest















                  Required, but never shown

























                  4 Answers
                  4






                  active

                  oldest

                  votes








                  4 Answers
                  4






                  active

                  oldest

                  votes









                  active

                  oldest

                  votes






                  active

                  oldest

                  votes








                  up vote
                  8
                  down vote



                  accepted










                  Yes, you can vary the gray levels, and the following can be used also to general non-gray colors.



                  documentclass{standalone}
                  usepackage{tikz}
                  begin{document}
                  begin{tikzpicture}
                  foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                  draw (i, 0) node[text=gray!j!white] {A};
                  }
                  end{tikzpicture}
                  end{document}


                  enter image description here






                  share|improve this answer

























                    up vote
                    8
                    down vote



                    accepted










                    Yes, you can vary the gray levels, and the following can be used also to general non-gray colors.



                    documentclass{standalone}
                    usepackage{tikz}
                    begin{document}
                    begin{tikzpicture}
                    foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                    draw (i, 0) node[text=gray!j!white] {A};
                    }
                    end{tikzpicture}
                    end{document}


                    enter image description here






                    share|improve this answer























                      up vote
                      8
                      down vote



                      accepted







                      up vote
                      8
                      down vote



                      accepted






                      Yes, you can vary the gray levels, and the following can be used also to general non-gray colors.



                      documentclass{standalone}
                      usepackage{tikz}
                      begin{document}
                      begin{tikzpicture}
                      foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                      draw (i, 0) node[text=gray!j!white] {A};
                      }
                      end{tikzpicture}
                      end{document}


                      enter image description here






                      share|improve this answer












                      Yes, you can vary the gray levels, and the following can be used also to general non-gray colors.



                      documentclass{standalone}
                      usepackage{tikz}
                      begin{document}
                      begin{tikzpicture}
                      foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                      draw (i, 0) node[text=gray!j!white] {A};
                      }
                      end{tikzpicture}
                      end{document}


                      enter image description here







                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered Nov 21 at 15:33









                      marmot

                      81.4k491174




                      81.4k491174






















                          up vote
                          6
                          down vote













                          Just for fun, another foreach solution:



                          documentclass{standalone}
                          usepackage{tikz}
                          begin{document}
                          begin{tikzpicture}
                          foreach i [count=j] in {0, 10, ..., 100} {
                          draw (j, 0) node[text=blue!i!red] {A};
                          }
                          end{tikzpicture}
                          end{document}


                          enter image description here






                          share|improve this answer

























                            up vote
                            6
                            down vote













                            Just for fun, another foreach solution:



                            documentclass{standalone}
                            usepackage{tikz}
                            begin{document}
                            begin{tikzpicture}
                            foreach i [count=j] in {0, 10, ..., 100} {
                            draw (j, 0) node[text=blue!i!red] {A};
                            }
                            end{tikzpicture}
                            end{document}


                            enter image description here






                            share|improve this answer























                              up vote
                              6
                              down vote










                              up vote
                              6
                              down vote









                              Just for fun, another foreach solution:



                              documentclass{standalone}
                              usepackage{tikz}
                              begin{document}
                              begin{tikzpicture}
                              foreach i [count=j] in {0, 10, ..., 100} {
                              draw (j, 0) node[text=blue!i!red] {A};
                              }
                              end{tikzpicture}
                              end{document}


                              enter image description here






                              share|improve this answer












                              Just for fun, another foreach solution:



                              documentclass{standalone}
                              usepackage{tikz}
                              begin{document}
                              begin{tikzpicture}
                              foreach i [count=j] in {0, 10, ..., 100} {
                              draw (j, 0) node[text=blue!i!red] {A};
                              }
                              end{tikzpicture}
                              end{document}


                              enter image description here







                              share|improve this answer












                              share|improve this answer



                              share|improve this answer










                              answered Nov 21 at 19:48









                              Ignasi

                              90.7k4164303




                              90.7k4164303






















                                  up vote
                                  5
                                  down vote













                                  You can evaluate a variable within the foreach loop itself (see page 904 of 3.0.1a manual).



                                  Here since you want to go from black to white, you can do:



                                  result



                                  documentclass{standalone}
                                  usepackage{tikz}
                                  begin{document}
                                  begin{tikzpicture}
                                  foreach i [evaluate=i as gradient using 100-i*10] in {0, 1, ..., 10} {
                                  draw (i, 0) node[text=black!gradient] {A};
                                  }
                                  end{tikzpicture}
                                  end{document}





                                  share|improve this answer

























                                    up vote
                                    5
                                    down vote













                                    You can evaluate a variable within the foreach loop itself (see page 904 of 3.0.1a manual).



                                    Here since you want to go from black to white, you can do:



                                    result



                                    documentclass{standalone}
                                    usepackage{tikz}
                                    begin{document}
                                    begin{tikzpicture}
                                    foreach i [evaluate=i as gradient using 100-i*10] in {0, 1, ..., 10} {
                                    draw (i, 0) node[text=black!gradient] {A};
                                    }
                                    end{tikzpicture}
                                    end{document}





                                    share|improve this answer























                                      up vote
                                      5
                                      down vote










                                      up vote
                                      5
                                      down vote









                                      You can evaluate a variable within the foreach loop itself (see page 904 of 3.0.1a manual).



                                      Here since you want to go from black to white, you can do:



                                      result



                                      documentclass{standalone}
                                      usepackage{tikz}
                                      begin{document}
                                      begin{tikzpicture}
                                      foreach i [evaluate=i as gradient using 100-i*10] in {0, 1, ..., 10} {
                                      draw (i, 0) node[text=black!gradient] {A};
                                      }
                                      end{tikzpicture}
                                      end{document}





                                      share|improve this answer












                                      You can evaluate a variable within the foreach loop itself (see page 904 of 3.0.1a manual).



                                      Here since you want to go from black to white, you can do:



                                      result



                                      documentclass{standalone}
                                      usepackage{tikz}
                                      begin{document}
                                      begin{tikzpicture}
                                      foreach i [evaluate=i as gradient using 100-i*10] in {0, 1, ..., 10} {
                                      draw (i, 0) node[text=black!gradient] {A};
                                      }
                                      end{tikzpicture}
                                      end{document}






                                      share|improve this answer












                                      share|improve this answer



                                      share|improve this answer










                                      answered Nov 21 at 15:42









                                      AndréC

                                      6,84211140




                                      6,84211140






















                                          up vote
                                          4
                                          down vote













                                          A slightly different syntax than what marmot proposed, but with the same effects



                                          documentclass[tikz,border=3.14pt]{standalone}
                                          begin{document}
                                          begin{tikzpicture}
                                          draw foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                                          (i, 0) node[text=gray!j!white] {A}
                                          };
                                          end{tikzpicture}
                                          end{document}





                                          share|improve this answer

























                                            up vote
                                            4
                                            down vote













                                            A slightly different syntax than what marmot proposed, but with the same effects



                                            documentclass[tikz,border=3.14pt]{standalone}
                                            begin{document}
                                            begin{tikzpicture}
                                            draw foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                                            (i, 0) node[text=gray!j!white] {A}
                                            };
                                            end{tikzpicture}
                                            end{document}





                                            share|improve this answer























                                              up vote
                                              4
                                              down vote










                                              up vote
                                              4
                                              down vote









                                              A slightly different syntax than what marmot proposed, but with the same effects



                                              documentclass[tikz,border=3.14pt]{standalone}
                                              begin{document}
                                              begin{tikzpicture}
                                              draw foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                                              (i, 0) node[text=gray!j!white] {A}
                                              };
                                              end{tikzpicture}
                                              end{document}





                                              share|improve this answer












                                              A slightly different syntax than what marmot proposed, but with the same effects



                                              documentclass[tikz,border=3.14pt]{standalone}
                                              begin{document}
                                              begin{tikzpicture}
                                              draw foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                                              (i, 0) node[text=gray!j!white] {A}
                                              };
                                              end{tikzpicture}
                                              end{document}






                                              share|improve this answer












                                              share|improve this answer



                                              share|improve this answer










                                              answered Nov 21 at 15:45









                                              BambOo

                                              3,0011526




                                              3,0011526






























                                                  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.





                                                  Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                                                  Please pay close attention to the following guidance:


                                                  • 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%2f461139%2fhow-to-use-tikz-to-calculate-and-use-successive-color-values-with-text%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

                                                  Le Mesnil-Réaume

                                                  Ida-Boy-Ed-Garten

                                                  web3.py web3.isConnected() returns false always