filecontents: select rows of group to display












5















I have a file that contains 1,000 rows of product data. I want to select only a specific product type to print in my document.



Minimal code in main.tex:



documentclass{article}
usepackage{filecontents}
begin{filecontents*}{product.tex}

%Type =1,2...10
No.,Type ,Name , Description
1, 1, A1,D1
….
30, 1, A1, D30
31, 2, A2, D31

131,2, A2, D131
132,3,A3,D132
….
249,4,A4,D249

1.000,10, A10,D1000

end{filecontents*}

begin{document}
%Need command can CHOOSE Type = 1 and/or 2, and/or 3, ...10
%i choose type = 1 & 3
include{run.tex}
end{document}


Product Types range from 1, 2, ..., 10. And in run.tex:



%Display like:

Name[i] & Description[j]


main.pdf result:




Type = 1

A1 - D1



A1 - D30

Type = 3

A3 - D132



A3 - D248









share|improve this question





























    5















    I have a file that contains 1,000 rows of product data. I want to select only a specific product type to print in my document.



    Minimal code in main.tex:



    documentclass{article}
    usepackage{filecontents}
    begin{filecontents*}{product.tex}

    %Type =1,2...10
    No.,Type ,Name , Description
    1, 1, A1,D1
    ….
    30, 1, A1, D30
    31, 2, A2, D31

    131,2, A2, D131
    132,3,A3,D132
    ….
    249,4,A4,D249

    1.000,10, A10,D1000

    end{filecontents*}

    begin{document}
    %Need command can CHOOSE Type = 1 and/or 2, and/or 3, ...10
    %i choose type = 1 & 3
    include{run.tex}
    end{document}


    Product Types range from 1, 2, ..., 10. And in run.tex:



    %Display like:

    Name[i] & Description[j]


    main.pdf result:




    Type = 1

    A1 - D1



    A1 - D30

    Type = 3

    A3 - D132



    A3 - D248









    share|improve this question



























      5












      5








      5








      I have a file that contains 1,000 rows of product data. I want to select only a specific product type to print in my document.



      Minimal code in main.tex:



      documentclass{article}
      usepackage{filecontents}
      begin{filecontents*}{product.tex}

      %Type =1,2...10
      No.,Type ,Name , Description
      1, 1, A1,D1
      ….
      30, 1, A1, D30
      31, 2, A2, D31

      131,2, A2, D131
      132,3,A3,D132
      ….
      249,4,A4,D249

      1.000,10, A10,D1000

      end{filecontents*}

      begin{document}
      %Need command can CHOOSE Type = 1 and/or 2, and/or 3, ...10
      %i choose type = 1 & 3
      include{run.tex}
      end{document}


      Product Types range from 1, 2, ..., 10. And in run.tex:



      %Display like:

      Name[i] & Description[j]


      main.pdf result:




      Type = 1

      A1 - D1



      A1 - D30

      Type = 3

      A3 - D132



      A3 - D248









      share|improve this question
















      I have a file that contains 1,000 rows of product data. I want to select only a specific product type to print in my document.



      Minimal code in main.tex:



      documentclass{article}
      usepackage{filecontents}
      begin{filecontents*}{product.tex}

      %Type =1,2...10
      No.,Type ,Name , Description
      1, 1, A1,D1
      ….
      30, 1, A1, D30
      31, 2, A2, D31

      131,2, A2, D131
      132,3,A3,D132
      ….
      249,4,A4,D249

      1.000,10, A10,D1000

      end{filecontents*}

      begin{document}
      %Need command can CHOOSE Type = 1 and/or 2, and/or 3, ...10
      %i choose type = 1 & 3
      include{run.tex}
      end{document}


      Product Types range from 1, 2, ..., 10. And in run.tex:



      %Display like:

      Name[i] & Description[j]


      main.pdf result:




      Type = 1

      A1 - D1



      A1 - D30

      Type = 3

      A3 - D132



      A3 - D248






      conditionals external-files






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 8 hours ago









      Werner

      445k699801685




      445k699801685










      asked 9 hours ago









      tisaigontisaigon

      1657




      1657






















          2 Answers
          2






          active

          oldest

          votes


















          3














          Use datatool for this:



          enter image description here



          documentclass{article}

          usepackage{filecontents}
          begin{filecontents*}{product.tex}
          %Type =1,2...10
          No,Type,Name,Description
          1,1,A1,D1
          2,1,A1,D2
          3,1,A1,D3
          30,1,A1,D30
          31,2,A2,D31
          131,2,A2,D131
          132,3,A3,D132
          133,3,A3,D133
          134,3,A3,D134
          249,4,A4,D249
          1000,10,A10,D1000
          end{filecontents*}

          usepackage{datatool}

          DTLloaddb[autokeys=false]{products}{product.tex}

          newcommand{printtype}[1]{%
          par
          section*{Type #1}
          DTLforeach*
          [DTLiseq{Type}{#1}]% Condition
          {products}% Database
          {No=No,Type=Type,Name=Name,Description=Description}{%
          noindentName quad Descriptionpar
          }%
          }

          begin{document}

          Here is some text.

          printtype{1}

          Some breaking text here.

          printtype{3}

          And then some final text.

          end{document}


          The printtype{<type>} command uses DTLforeach to cycle through the products database and print only items where the Type equals <type>. You can format the presentation however you want.






          share|improve this answer
























          • Thank you. What is code if i need 2 condition (type = range (1-4) and No =1) do A) ; (type = range (1-4) and No != 1) do B) . Thanks

            – tisaigon
            3 hours ago



















          3














          This is an answer heavily based on this answer. The main point here is to remark that you need to do pgfplotsinvokeforeach in order to loop over the types you want typeset, and not foreach.



          documentclass{article}
          usepackage{filecontents}
          begin{filecontents*}{product.dat}
          No.,Type,Name,Description
          1, 1, A1,D1
          2, 1, A1,D2
          30, 1, A1, D30
          31, 2, A2, D31
          131,2, A2, D131
          132,3,A3,D132
          249,4,A4,D249
          1.000,10, A10,D1000
          end{filecontents*}
          usepackage{amsmath,amssymb}
          usepackage{pgfplotstable}
          pgfplotsset{compat=1.16}
          begin{document}
          pgfplotstableread[col sep=comma]{product.dat}{data}
          pgfplotsinvokeforeach{1,3}{
          subsection*{boldmath$text{Type}=#1$}
          pgfplotstabletypeset[string type,
          row predicate/.code={%
          pgfplotstablegetelem{##1}{Type}of{data}
          ifnumpgfplotsretval=#1relax
          elsepgfplotstableuserowfalsefi}
          ]{data}
          }
          end{document}


          enter image description here






          share|improve this answer
























          • many thank for your solution.

            – tisaigon
            3 hours 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%2f476354%2ffilecontents-select-rows-of-group-to-display%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









          3














          Use datatool for this:



          enter image description here



          documentclass{article}

          usepackage{filecontents}
          begin{filecontents*}{product.tex}
          %Type =1,2...10
          No,Type,Name,Description
          1,1,A1,D1
          2,1,A1,D2
          3,1,A1,D3
          30,1,A1,D30
          31,2,A2,D31
          131,2,A2,D131
          132,3,A3,D132
          133,3,A3,D133
          134,3,A3,D134
          249,4,A4,D249
          1000,10,A10,D1000
          end{filecontents*}

          usepackage{datatool}

          DTLloaddb[autokeys=false]{products}{product.tex}

          newcommand{printtype}[1]{%
          par
          section*{Type #1}
          DTLforeach*
          [DTLiseq{Type}{#1}]% Condition
          {products}% Database
          {No=No,Type=Type,Name=Name,Description=Description}{%
          noindentName quad Descriptionpar
          }%
          }

          begin{document}

          Here is some text.

          printtype{1}

          Some breaking text here.

          printtype{3}

          And then some final text.

          end{document}


          The printtype{<type>} command uses DTLforeach to cycle through the products database and print only items where the Type equals <type>. You can format the presentation however you want.






          share|improve this answer
























          • Thank you. What is code if i need 2 condition (type = range (1-4) and No =1) do A) ; (type = range (1-4) and No != 1) do B) . Thanks

            – tisaigon
            3 hours ago
















          3














          Use datatool for this:



          enter image description here



          documentclass{article}

          usepackage{filecontents}
          begin{filecontents*}{product.tex}
          %Type =1,2...10
          No,Type,Name,Description
          1,1,A1,D1
          2,1,A1,D2
          3,1,A1,D3
          30,1,A1,D30
          31,2,A2,D31
          131,2,A2,D131
          132,3,A3,D132
          133,3,A3,D133
          134,3,A3,D134
          249,4,A4,D249
          1000,10,A10,D1000
          end{filecontents*}

          usepackage{datatool}

          DTLloaddb[autokeys=false]{products}{product.tex}

          newcommand{printtype}[1]{%
          par
          section*{Type #1}
          DTLforeach*
          [DTLiseq{Type}{#1}]% Condition
          {products}% Database
          {No=No,Type=Type,Name=Name,Description=Description}{%
          noindentName quad Descriptionpar
          }%
          }

          begin{document}

          Here is some text.

          printtype{1}

          Some breaking text here.

          printtype{3}

          And then some final text.

          end{document}


          The printtype{<type>} command uses DTLforeach to cycle through the products database and print only items where the Type equals <type>. You can format the presentation however you want.






          share|improve this answer
























          • Thank you. What is code if i need 2 condition (type = range (1-4) and No =1) do A) ; (type = range (1-4) and No != 1) do B) . Thanks

            – tisaigon
            3 hours ago














          3












          3








          3







          Use datatool for this:



          enter image description here



          documentclass{article}

          usepackage{filecontents}
          begin{filecontents*}{product.tex}
          %Type =1,2...10
          No,Type,Name,Description
          1,1,A1,D1
          2,1,A1,D2
          3,1,A1,D3
          30,1,A1,D30
          31,2,A2,D31
          131,2,A2,D131
          132,3,A3,D132
          133,3,A3,D133
          134,3,A3,D134
          249,4,A4,D249
          1000,10,A10,D1000
          end{filecontents*}

          usepackage{datatool}

          DTLloaddb[autokeys=false]{products}{product.tex}

          newcommand{printtype}[1]{%
          par
          section*{Type #1}
          DTLforeach*
          [DTLiseq{Type}{#1}]% Condition
          {products}% Database
          {No=No,Type=Type,Name=Name,Description=Description}{%
          noindentName quad Descriptionpar
          }%
          }

          begin{document}

          Here is some text.

          printtype{1}

          Some breaking text here.

          printtype{3}

          And then some final text.

          end{document}


          The printtype{<type>} command uses DTLforeach to cycle through the products database and print only items where the Type equals <type>. You can format the presentation however you want.






          share|improve this answer













          Use datatool for this:



          enter image description here



          documentclass{article}

          usepackage{filecontents}
          begin{filecontents*}{product.tex}
          %Type =1,2...10
          No,Type,Name,Description
          1,1,A1,D1
          2,1,A1,D2
          3,1,A1,D3
          30,1,A1,D30
          31,2,A2,D31
          131,2,A2,D131
          132,3,A3,D132
          133,3,A3,D133
          134,3,A3,D134
          249,4,A4,D249
          1000,10,A10,D1000
          end{filecontents*}

          usepackage{datatool}

          DTLloaddb[autokeys=false]{products}{product.tex}

          newcommand{printtype}[1]{%
          par
          section*{Type #1}
          DTLforeach*
          [DTLiseq{Type}{#1}]% Condition
          {products}% Database
          {No=No,Type=Type,Name=Name,Description=Description}{%
          noindentName quad Descriptionpar
          }%
          }

          begin{document}

          Here is some text.

          printtype{1}

          Some breaking text here.

          printtype{3}

          And then some final text.

          end{document}


          The printtype{<type>} command uses DTLforeach to cycle through the products database and print only items where the Type equals <type>. You can format the presentation however you want.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 8 hours ago









          WernerWerner

          445k699801685




          445k699801685













          • Thank you. What is code if i need 2 condition (type = range (1-4) and No =1) do A) ; (type = range (1-4) and No != 1) do B) . Thanks

            – tisaigon
            3 hours ago



















          • Thank you. What is code if i need 2 condition (type = range (1-4) and No =1) do A) ; (type = range (1-4) and No != 1) do B) . Thanks

            – tisaigon
            3 hours ago

















          Thank you. What is code if i need 2 condition (type = range (1-4) and No =1) do A) ; (type = range (1-4) and No != 1) do B) . Thanks

          – tisaigon
          3 hours ago





          Thank you. What is code if i need 2 condition (type = range (1-4) and No =1) do A) ; (type = range (1-4) and No != 1) do B) . Thanks

          – tisaigon
          3 hours ago











          3














          This is an answer heavily based on this answer. The main point here is to remark that you need to do pgfplotsinvokeforeach in order to loop over the types you want typeset, and not foreach.



          documentclass{article}
          usepackage{filecontents}
          begin{filecontents*}{product.dat}
          No.,Type,Name,Description
          1, 1, A1,D1
          2, 1, A1,D2
          30, 1, A1, D30
          31, 2, A2, D31
          131,2, A2, D131
          132,3,A3,D132
          249,4,A4,D249
          1.000,10, A10,D1000
          end{filecontents*}
          usepackage{amsmath,amssymb}
          usepackage{pgfplotstable}
          pgfplotsset{compat=1.16}
          begin{document}
          pgfplotstableread[col sep=comma]{product.dat}{data}
          pgfplotsinvokeforeach{1,3}{
          subsection*{boldmath$text{Type}=#1$}
          pgfplotstabletypeset[string type,
          row predicate/.code={%
          pgfplotstablegetelem{##1}{Type}of{data}
          ifnumpgfplotsretval=#1relax
          elsepgfplotstableuserowfalsefi}
          ]{data}
          }
          end{document}


          enter image description here






          share|improve this answer
























          • many thank for your solution.

            – tisaigon
            3 hours ago
















          3














          This is an answer heavily based on this answer. The main point here is to remark that you need to do pgfplotsinvokeforeach in order to loop over the types you want typeset, and not foreach.



          documentclass{article}
          usepackage{filecontents}
          begin{filecontents*}{product.dat}
          No.,Type,Name,Description
          1, 1, A1,D1
          2, 1, A1,D2
          30, 1, A1, D30
          31, 2, A2, D31
          131,2, A2, D131
          132,3,A3,D132
          249,4,A4,D249
          1.000,10, A10,D1000
          end{filecontents*}
          usepackage{amsmath,amssymb}
          usepackage{pgfplotstable}
          pgfplotsset{compat=1.16}
          begin{document}
          pgfplotstableread[col sep=comma]{product.dat}{data}
          pgfplotsinvokeforeach{1,3}{
          subsection*{boldmath$text{Type}=#1$}
          pgfplotstabletypeset[string type,
          row predicate/.code={%
          pgfplotstablegetelem{##1}{Type}of{data}
          ifnumpgfplotsretval=#1relax
          elsepgfplotstableuserowfalsefi}
          ]{data}
          }
          end{document}


          enter image description here






          share|improve this answer
























          • many thank for your solution.

            – tisaigon
            3 hours ago














          3












          3








          3







          This is an answer heavily based on this answer. The main point here is to remark that you need to do pgfplotsinvokeforeach in order to loop over the types you want typeset, and not foreach.



          documentclass{article}
          usepackage{filecontents}
          begin{filecontents*}{product.dat}
          No.,Type,Name,Description
          1, 1, A1,D1
          2, 1, A1,D2
          30, 1, A1, D30
          31, 2, A2, D31
          131,2, A2, D131
          132,3,A3,D132
          249,4,A4,D249
          1.000,10, A10,D1000
          end{filecontents*}
          usepackage{amsmath,amssymb}
          usepackage{pgfplotstable}
          pgfplotsset{compat=1.16}
          begin{document}
          pgfplotstableread[col sep=comma]{product.dat}{data}
          pgfplotsinvokeforeach{1,3}{
          subsection*{boldmath$text{Type}=#1$}
          pgfplotstabletypeset[string type,
          row predicate/.code={%
          pgfplotstablegetelem{##1}{Type}of{data}
          ifnumpgfplotsretval=#1relax
          elsepgfplotstableuserowfalsefi}
          ]{data}
          }
          end{document}


          enter image description here






          share|improve this answer













          This is an answer heavily based on this answer. The main point here is to remark that you need to do pgfplotsinvokeforeach in order to loop over the types you want typeset, and not foreach.



          documentclass{article}
          usepackage{filecontents}
          begin{filecontents*}{product.dat}
          No.,Type,Name,Description
          1, 1, A1,D1
          2, 1, A1,D2
          30, 1, A1, D30
          31, 2, A2, D31
          131,2, A2, D131
          132,3,A3,D132
          249,4,A4,D249
          1.000,10, A10,D1000
          end{filecontents*}
          usepackage{amsmath,amssymb}
          usepackage{pgfplotstable}
          pgfplotsset{compat=1.16}
          begin{document}
          pgfplotstableread[col sep=comma]{product.dat}{data}
          pgfplotsinvokeforeach{1,3}{
          subsection*{boldmath$text{Type}=#1$}
          pgfplotstabletypeset[string type,
          row predicate/.code={%
          pgfplotstablegetelem{##1}{Type}of{data}
          ifnumpgfplotsretval=#1relax
          elsepgfplotstableuserowfalsefi}
          ]{data}
          }
          end{document}


          enter image description here







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 5 hours ago









          marmotmarmot

          103k4121233




          103k4121233













          • many thank for your solution.

            – tisaigon
            3 hours ago



















          • many thank for your solution.

            – tisaigon
            3 hours ago

















          many thank for your solution.

          – tisaigon
          3 hours ago





          many thank for your solution.

          – tisaigon
          3 hours 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%2f476354%2ffilecontents-select-rows-of-group-to-display%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

          How to label and detect the document text images

          Vallis Paradisi

          Tabula Rosettana