Dateiinhalt: Wählen Sie die anzuzeigenden Zeilen der Gruppe aus

Dateiinhalt: Wählen Sie die anzuzeigenden Zeilen der Gruppe aus

Ich habe eine Datei mit 1.000 Zeilen Produktdaten. Ich möchte in meinem Dokument nur einen bestimmten Produkttyp zum Drucken auswählen.

Minimaler 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}

Die Produkttypen reichen von 1, 2, ..., 10. Und in run.tex:

%Display like:

Name[i] & Description[j]

main.pdfErgebnis:

Typ = 1

A1 - D1


A1 - D30

Typ = 3

A3 - D132


A3 - D248

Antwort1

Verwendendatatooldafür:

Bildbeschreibung hier eingeben

\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}

Der \printtype{<type>}Befehl wird \DTLforeachzum Durchlaufen der productsDatenbank verwendet und druckt nur Elemente aus, bei denen \Typegleich ist <type>. Sie können die Präsentation beliebig formatieren.

Antwort2

Diese Antwort basiert stark aufdiese Antwort. Der Hauptpunkt hier ist die Bemerkung, die Sie tun müssen, \pgfplotsinvokeforeachum eine Schleife über die Typen durchzuführen, die Sie setzen möchten, und nicht \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}

Bildbeschreibung hier eingeben

verwandte Informationen