
Me gustaría crear documentos de texto simples en los que las líneas y párrafos puedan contener segmentos subrayados (\rule{}{}) de varias longitudes preestablecidas. Al compilar el documento únicamente con los segmentos subrayados e imprimirlo, se obtiene un documento en papel que se puede completar a mano o con máquina de escribir.
También me gustaría producir documentos que parezcan haber sido completados con una máquina de escribir, pero que en realidad se producen ingresando texto en fuente de máquina de escribir en la fuente LaTeX.
El ejemplo de trabajo mínimo logra el efecto deseado, pero solo mediante una manipulación manual poco práctica para determinar la longitud del subrayado \ul{} que sigue al texto subrayado \ultt{} necesario para obtener la longitud correcta.
Obviamente, uno quiere una forma de calcular la longitud del texto de fuente de máquina de escribir subrayado ingresado en un segmento y restarlo de la longitud preestablecida del segmento subrayado para obtener la longitud de la extensión del subrayado.
El código de ejemplo mínimo de trabajo debería aclarar la idea.
Obviamente también sería bueno tener alguna forma más directa de lograr el resultado con un paquete existente, pero he buscado durante horas en varias ocasiones sin encontrar nada.
\documentclass[10pt, letterpaper]{article}
\usepackage[top=1.00in, bottom=1.00in, left=1.00in, right=1.00in]{geometry}
\usepackage[parfill]{parskip}
\usepackage{ulem} % Set depth of underline
\def\ul#1{\rule[-1.8pt]{#1}{0.4pt}}
\def\ultt#1{\rule[-1.8pt]{0em}{0.4pt}\uline{\texttt{#1}}\rule[-1.8pt]{0em}{0.4pt}}
\begin{document}
\renewcommand{\ULdepth}{1.8pt}
\vspace{3ex}
\noindent\makebox[\linewidth]{\rule{\textwidth}{0.4pt}} % Guide line
\makebox[\textwidth][l]{\rule{3.125in}{0.4pt}\rule{0.25in}{1pt}\rule{3.125in}{0.4pt}} % Guide line
\vspace{1ex}
\makebox[\textwidth][l]{Seller \ul{2.75in}, of \ul{3.13in}}
\vspace{1ex}
\makebox[\textwidth][l]{Seller \ultt{Mr. Gargantua}\ul{1.73in}, of \ultt{France}\ul{2.69in}}
\noindent\makebox[\linewidth]{\rule{\textwidth}{0.4pt}} % Guide line
\end{document}
Respuesta1
Hay diferentes maneras de lograrlo.
Puede usar el \rlap
comando en el texto de la máquina de escribir, de modo que el \ul
comando que viene después comience donde comienza, y \ul
luego pueda tener la misma longitud que la que insertó originalmente. (Elimine el subrayado debajo del texto de la máquina de escribir, ya que ya no es necesario).
\newcommand{\mytt}[1]{\rlap{\texttt{#1}}}
\makebox[\textwidth][l]{Seller \ul{2.75in}, of \ul{3.13in}}
\vspace{1ex}
\makebox[\textwidth][l]{Seller \mytt{Mr.\ Gargantua}\ul{2.75in}, of \mytt{France}\ul{3.13in}}
(Como no está utilizando \underline
, no necesita el ulem
paquete ni redefinirlo \ULdepth
).
Por cierto, es la opción parfill de parskip la que hace que mbox
es sea necesario. Yo lo quitaría. Sin él, simplemente podrías hacer:
Seller \ul{2.75in}, of \ul{3.13in}
\vspace{1ex}
Seller \mytt{Mr.\ Gargantua}\ul{2.75in}, of \mytt{France}\ul{3.13in}
Personalmente, sin embargo, sería aún más vago. Cargaría el xhfill
paquete y simplemente definiría un comando para que automáticamente los espacios en blanco tengan la longitud correcta para completar la línea.
\usepackage{xhfill}
\newcommand{\mytt}[1]{\rlap{\texttt{#1}}}
\newcommand{\myulfill}{\xrfill[-1.8pt]{0.4pt}}
...
Seller \myulfill, of \myulfill
\vspace{1ex}
Seller \mytt{Mr.\ Gargantua}\myulfill, of \mytt{France}\myulfill
Entonces no tienes que calcular manualmentecualquier cosa.
Sin embargo, esto hará que los espacios en blanco sean del mismo tamaño. Si no desea eso, es posible que solo desee usarlo para el último espacio en blanco de la línea, para asegurarse de que el espacio en blanco tenga exactamente el ancho correcto para llenar la línea sin tener que obtenerlo mediante prueba y error.
También es posible hacer lo que sugeriste; obtenga el ancho de la inserción y réstelo:
\newlength{\ullength}
\setlength{\ullength}{2.75in}
\newlength{\fieldwidth}
\settowidth{\fieldwidth}{\texttt{Mr.\ Gargantua}}
\addtolength{\ullength}{-\fieldwidth}
\makebox[\textwidth][l]{Seller \ultt{Mr.\ Gargantua}\ul{\ullength} ...}
Pero no recomendaría ir por ese camino.