filecontents: selecione linhas do grupo para exibir

filecontents: selecione linhas do grupo para exibir

Tenho um arquivo que contém 1.000 linhas de dados de produtos. Quero selecionar apenas um tipo de produto específico para imprimir em meu documento.

Código mínimo em 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}

Os tipos de produtos variam de 1, 2, ..., 10. E em run.tex:

%Display like:

Name[i] & Description[j]

main.pdfresultado:

Tipo = 1

A1 - D1


A1 - D30

Tipo = 3

A3 - D132


A3 - D248

Responder1

Usardatatoolpor esta:

insira a descrição da imagem aqui

\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}{%
    \noindent\Name \quad \Description\par
  }% 
}

\begin{document}

Here is some text.

\printtype{1}

Some breaking text here.

\printtype{3}

And then some final text.

\end{document}

O \printtype{<type>}comando usa \DTLforeachpara percorrer o productsbanco de dados e imprimir apenas itens onde é \Typeigual a <type>. Você pode formatar a apresentação como quiser.

Responder2

Esta é uma resposta fortemente baseada emesta resposta. O ponto principal aqui é observar o que você precisa fazer \pgfplotsinvokeforeachpara percorrer os tipos que deseja formatar, e não \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}
  \ifnum\pgfplotsretval=#1\relax
  \else\pgfplotstableuserowfalse\fi}
]{\data}
}
\end{document}

insira a descrição da imagem aqui

informação relacionada