No sé si esto encaja aquí, pero aquí está mi pregunta:
Me gustaría realizar un conjunto de verificaciones de reclamos de una lista de clientes para que puedan imprimirse todos juntos en el mismo PDF.
Estoy buscando un algoritmo de repetición que canalice nombres y direcciones, etc., los complete en una plantilla de verificación de reclamos y los repita, digamos, 3 o 4 veces por página, y luego continúe con la página siguiente con los clientes restantes. Al final, busco tener un único PDF para imprimir todo el conjunto de cheques de reclamo con líneas de corte perforadas entre cada cheque.
Extraño: esto no tiene nada que ver con la pregunta que nos ocupa, pero ¿hay alguna medida de falsificación que ofrezca LaTeX que pueda incluir en mi plantilla de verificación de reclamo?
nótese bien- En realidad, no tengo una plantilla para el cheque de reclamo que me gustaría implementar, pero tal vez podría ofrecerme algún consejo tipográfico sobre cómo podría diseñar el cheque. Sé que necesito mi información en alguna parte, la del reclamante, los gráficos de mi negocio, un código de identificación de cheque y algunas medidas falsificadas.
Respuesta1
Aquí hay un punto de partida usando datatool
. No discutiré el diseño del cheque (diseño), ya que es candidato para una pregunta separada.
\documentclass{article}
\usepackage[a4paper,textheight=5in,left=1in,right=1in]{geometry} %% 5in only for demo
\usepackage{xcolor}%
\usepackage{adjustbox}
%
\usepackage{filecontents}
\begin{filecontents*}{names.csv}
number,Name,money
1,Mr.\,Sreeram P.,12
2,Mr.\,Rajaram K.,20
3,Mr.\,Dhanraj Julien,35
4,Ms.\,Lalitha S.,50
5,Mr.\,Sreeram P.,2
6,Mr.\,Rama Anvesh Reddy,400
7,Ms.\,Shobana R.,65
8,Ms.\,Archana D.,45
9,Mr.\,Selvakumar R.,54
10,Ms.\,Harthi M. G.,14
\end{filecontents*}
\usepackage{datatool}
\begin{document}
%\sloppy
\DTLloaddb{names}{names.csv}
\pagestyle{empty}
\DTLforeach{names}{%
\name=Name,\money=money}{%
\par\noindent
\begin{minipage}{\textwidth}
\vskip\baselineskip
This is to remember that\, {\bfseries\name}\, has to give a sum of {\bfseries\$\money}\, to me which he is reluctant to give.
\vskip0.5\baselineskip
\hspace*{-1in}\makebox[\paperwidth][c]{\Huge\color{gray!40}\dotfill}
%% 1in is the left margin
\end{minipage}
}
\end{document}
Respuesta2
Mi ejemplo muestra cómo realizar esta tarea sin ningún paquete LaTeX. Supongamos que tenemos el archivo names.csv
en el formato que se muestra en la respuesta de Kumar.
% in preamble:
\newread\infile
\def\printletters #1 {\bgroup \endlinechar=-1
\openin\infile=#1 \read\infile to\tmp \printlettersA
}
\def\printlettersA{\ifeof\infile \egroup \else
\read\infile to\tmp
\ifx\tmp\empty \else \expandafter\printlettersB\tmp\par \fi
\expandafter \printlettersA\fi
}
\def\printlettersB #1,#2#3#4,#5\par{\def\sex{#3}\def\name{#2#3#4}\def\money{#3}\printpage}
\def\printpage{%
\bigskip
This is to remember that {\bf\name} has to give a sum of
{\bf\$\money} to me which
\if s\sex s\fi he
is reluctant to give.
\bigskip\hrule\bigskip % or \vfill\eject or...
}
% in document:
\printletters names.csv
Tenga en cuenta que el sexo de la persona se escanea a partir de la segunda letra (Sr. o Sra.) y esta información se utiliza para la palabra "él" o "ella".
Respuesta3
Parasitaria descaradamente de los datos de Harish Kumar, esta solución utiliza textmerg
para la fusión:
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{textmerg}%
\usepackage{filecontents}
\begin{filecontents*}{names.dat}
Mr
Sreeram
P.
12
Mr
Rajaram
K.
20
Mr
Dhanraj
Julien
35
Ms
Lalitha
S.
50
Mr
Sreeram
P.
2
Mr
Rama Anvesh
Reddy
400
Ms
Shobana
R.
65
Ms
Archana
D.
45
Mr
Selvakumar
R.
54
Ms
Harthi
M. G.
14
\end{filecontents*}
\begin{document}
\pagestyle{empty}
\Fields{\honorific\surname\firstname\amount}
\Merge{names.dat}{%
\hrule
\bigskip\par
\noindent This is a reminder that {\bfseries\honorific{} \firstname{} \surname{}} owes me the sum of {\bfseries\pounds\amount}.\bigskip\par
\hrule}
\end{document}