I would like to design a command with a mandatory argument that writes
its argument (one or more text paragraphs) but automatically inserting
a black rule of width \textwidth between each two consecutive lines of
text. For example,
\mycommand{Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, elis.
Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget,
consectetuer id, vulputate a, magna. Donec vehicula augue eu eque.
Pellentesque habitant morbi tristique senectus et netus et malesuada
fames ac turpis egestas. Mauris ut leo.}
should automatically produce something like
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus
elit,
_______________________________________________________________
vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum
gravida
_______________________________________________________________
mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a,
_______________________________________________________________
magna. Donec vehicula augue eu neque. Pellentesque habitant morbi
tris-
_______________________________________________________________
tique senectus et netus et malesuada fames ac turpis egestas. Mauris
ut leo.
_______________________________________________________________
How should I define such a command? In a more general setting, how can
I control atomatically the line breaks generated by (La)TeX?
You can dissect a paragraph after it was set in a box (see TeX by Topic,
sec. 5.9.6):
\documentclass{article}
\newsavebox{\linebox}
\newcommand*{\mycommand}[1]{%
\vbox{%
#1%
\par
\addrules
}%
}
\newcommand*{\addrules}{%
\setbox\linebox\lastbox
\ifvoid\linebox\else
\unskip
\unpenalty
{\addrules}%
\box\linebox
\smallskip
\hrule
\smallskip
\fi
}
\begin{document}
\mycommand{Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, elis.
Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget,
consectetuer id, vulputate a, magna. Donec vehicula augue eu eque.
Pellentesque habitant morbi tristique senectus et netus et malesuada
fames ac turpis egestas. Mauris ut leo.}
\end{document}
--
Change “LookInSig” to “tcalveu” to answer by mail.
This seems to work for a single paragraph. Extending it to handle
multiple paragraphs would probably mean some \everypar trickery.
\documentclass{article}
\usepackage[normalem]{ulem}
\newcommand{\mycommand}[1]{%
\par\begingroup\noindent\parfillskip0pt%
\uline{\hbox to\parindent{\hfill}#1\hfill}\par\endgroup}
\begin{document}
\mycommand{Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, elis.
Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget,
consectetuer id, vulputate a, magna. Donec vehicula augue eu eque.
Pellentesque habitant morbi tristique senectus et netus et malesuada
fames ac turpis egestas. Mauris ut leo.}
\end{document}
///Peter
> This seems to work for a single paragraph. Extending it to handle
> multiple paragraphs would probably mean some \everypar trickery.
>
> \documentclass{article}
> \usepackage[normalem]{ulem}
The latest ulem allows underlining past paragraphs boundaries
(\par hacking rather than \everypar).
> \newcommand{\mycommand}[1]{%
> \par\begingroup\noindent\parfillskip0pt%
> \uline{\hbox to\parindent{\hfill}#1\hfill}\par\endgroup}
\noindent\uline{\indent ...
I suspect a solution would be had with the lineno package.
Donald Arseneau.