1,000 行の製品データを含むファイルがあります。ドキュメントに印刷する特定の製品タイプのみを選択したいです。
最小限のコード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}
製品タイプは 1、2、...、10 の範囲ですrun.tex
。
%Display like:
Name[i] & Description[j]
main.pdf
結果:
タイプ = 1 A1 - D1 … A1 - D30 タイプ = 3 A3 - D132 … A3 - D248
答え1
使用datatool
このために:
\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}
コマンド\printtype{<type>}
は、データベース\DTLforeach
を循環し、 が に等しいproducts
項目のみを印刷します。プレゼンテーションは、好きなようにフォーマットできます。\Type
<type>
答え2
これは主にこの答え\pgfplotsinvokeforeach
ここでの重要な点は、タイプセットしたい型をループするためにを実行する必要があり、 ではないということです\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}