One thing to keep in mind is that you will likely want something that allows you to specify the width of the full field (including label) for alignment purposes. morbusg's solution works this way as do my solutions:
% GENERAL USAGE: \COMMAND[width]{text}
\def\entrywithlabel[#1]#2{\parbox{#1}{{\small #2:} \hrulefill}}
\def\entrywithlabelunder[#1]#2{\parbox{#1}{\hrulefill\\[-.75ex]\centerline {#2}}}
\def\entrywithlabelraised[#1]#2{\parbox{#1}{\smash{\raise-1ex\hbox{{\tiny #2}}}\hrulefill}}
\def\boxentry[#1]#2{{\setlength{\fboxsep}{-\fboxrule}\fbox{\parbox{#1}{\smash{\raise-6.5pt\hbox{~{\tiny #2}}}\vspace{2ex}\mbox{}}}}}
\def\boxpar[#1]#2#3{{\setlength{\fboxsep}{-\fboxrule}\fbox{\parbox[][#2][t]{#1}{\mbox{}\\[-.125\baselineskip]\mbox{}~#3}}}}
I also like to use a \dynTable
command for automatically generating blank table rows:
% Usage: \dynTable{\begin{tabular}{tablespec}}{# repetitions}{rows}{\end{tabular}}
\makeatletter
\newcommand*{\InitToks}{\toks@={}}
\newcommand{\AddToks}[1]{\toks@=\expandafter{\the\toks@ #1}}
\newcommand*{\PrintToks}{\the\toks@}
\newcount\rowNo
\newcommand*{\dynTable}[4]{%
\begingroup
\InitToks\AddToks{#1}%
\rowNo=0 %
\loop\ifnum\rowNo<#2\relax\advance\rowNo by 1
\expandafter\AddToks\expandafter{#3}%
\repeat
\AddToks{#4}\PrintToks
\endgroup}
\makeatother
A sample end-of-month allocation worksheet:
\documentclass[11pt,letterpaper]{article}
\usepackage[centering,width=7.5in,height=9.5in]{geometry}
\usepackage[parfill]{parskip}
\pagestyle{empty}
% GENERAL USAGE: \COMMAND[width]{text}
\def\entrywithlabel[#1]#2{\parbox{#1}{{\small #2:} \hrulefill}}
\def\entrywithlabelunder[#1]#2{\parbox{#1}{\hrulefill\\[-.75ex]\centerline {#2}}}
\def\entrywithlabelraised[#1]#2{\parbox{#1}{\smash{\raise-1ex\hbox{{\tiny #2}}}\hrulefill}}
\def\boxentry[#1]#2{{\setlength{\fboxsep}{-\fboxrule}\fbox{\parbox{#1}{\smash{\raise-6.5pt\hbox{~{\tiny #2}}}\vspace{2ex}\mbox{}}}}}
\def\boxpar[#1]#2#3{{\setlength{\fboxsep}{-\fboxrule}\fbox{\parbox[][#2][t]{#1}{\mbox{}\\[-.125\baselineskip]\mbox{}~#3}}}}
% Usage: \dynTable{\begin{tabular}{tablespec}}{# repetitions}{rows}{\end{tabular}}
\makeatletter
\newcommand*{\InitToks}{\toks@={}}
\newcommand{\AddToks}[1]{\toks@=\expandafter{\the\toks@ #1}}
\newcommand*{\PrintToks}{\the\toks@}
\newcount\rowNo
\newcommand*{\dynTable}[4]{%
\begingroup
\InitToks\AddToks{#1}%
\rowNo=0 %
\loop\ifnum\rowNo<#2\relax\advance\rowNo by 1
\expandafter\AddToks\expandafter{#3}%
\repeat
\AddToks{#4}\PrintToks
\endgroup}
\makeatother
\begin{document}
\entrywithlabel[.45\hsize]{Month}\hfill \entrywithlabel[.45\hsize]{Year} \entrywithlabel[.45\hsize]{Submitter}\hfill \entrywithlabel[.45\hsize]{Date} \begin{center}
\def\h#1{\multicolumn{1}{c|}{\bfseries #1}}
\def\H#1{\multicolumn{1}{|c|}{\bfseries #1}}
\def\arraystretch{1.5}
\dynTable{%
\begin{tabular}{@{}|@{}p{3in}@{}|@{}p{.75in}@{}|@{}p{.75in}@{}|@{}p{3in}@{}|@{}}\hline
\H{Account} & \h{Debit} & \h{Credit} & \h{Project}\\\hline\hline
}{25}{ &&&\\\cline{2-4} }{&&&\\\hline\end{tabular}}
\end{center}
\end{document}
A fancier performance report that uses boxentry and entrywithlabelunder
\documentclass[11pt,letterpaper]{article}
\usepackage[centering,width=7in,height=10in]{geometry}
\usepackage[parfill]{parskip}
\usepackage{array,tabularx}
\renewcommand{\title}[2][]{\begin{center}\sffamily\bfseries\Large #2\ifx\relax#1\else\\\normalsize #1\fi\end{center}\vspace{1ex}}
\pagestyle{empty}
% GENERAL USAGE: \COMMAND[width]{text}
\def\entrywithlabel[#1]#2{\parbox{#1}{{\small #2:} \hrulefill}}
\def\entrywithlabelunder[#1]#2{\parbox{#1}{\hrulefill\\[-.75ex]\centerline {{\small #2}}}}
\def\entrywithlabelraised[#1]#2{\parbox{#1}{\smash{\raise-1ex\hbox{{\tiny #2}}}\hrulefill}}
\def\boxentry[#1]#2{{\setlength{\fboxsep}{-\fboxrule}\fbox{\parbox{#1}{\smash{\raise-6.5pt\hbox{~{\tiny #2}}}\vspace{2ex}\mbox{}}}}}
\def\boxpar[#1]#2#3{{\setlength{\fboxsep}{-\fboxrule}\fbox{\parbox[][#2][t]{#1}{\mbox{}\\[-.125\baselineskip]\mbox{}~#3}}}}
\begin{document}
\title{Performance Report}
\boxentry[.5\hsize]{Employee Name}\boxentry[.5\hsize]{Job Title}\\[-1.5pt]
\boxentry[.5\hsize]{Salary}\boxentry[.5\hsize]{Date Hired}\\[-1.5pt]
\boxentry[.5\hsize]{Reviewer Name}\boxentry[.5\hsize]{Date of Review}
{ \setlength{\extrarowheight}{-3pt}
\def\arraystretch{3}
\def\row#1{#1&&\\\hline}
\begin{tabularx}{\hsize}{|l|c|X|}\hline
\multicolumn{1}{|c|}{\textbf{Category}} & \textbf{Grade} & \mbox{}\hfill\textbf{Comments}\hfill\mbox{}\\\hline
\row{Attendance/Punctuality}
\row{Work Attitude}
\row{Mathematical Quality}
\row{Independence}
\row{Pedagogical Skill}
\row{Interpersonal Skill}
\end{tabularx}
}
\boxpar[\hsize]{2in}{Reviewer Summary {\small (provide attachments if additional details required)}:}\\[-1.5pt]
\boxpar[\hsize]{2in}{Goals:}
\vfill
\entrywithlabelunder[.45\hsize]{Employee Signature}\hfill\entrywithlabelunder[.45\hsize]{Reviewer Signature}\\[-\baselineskip]
\end{document}
Name ________
in your source wouldn't work at any rate because the underscore charater_
needs to be escaped with a backslash, so it'd beName \_\_\_\_\_\_\_\_
.