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

      2874




      2874






















          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

                      78.8k487166




                      78.8k487166






















                          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.3k4163302




                              90.3k4163302






















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




                                      6,32711140






















                                          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

                                              2,9661526




                                              2,9661526






























                                                   

                                                  draft saved


                                                  draft discarded



















































                                                   


                                                  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

                                                  Wiesbaden

                                                  Marschland

                                                  Dieringhausen