Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

automatic detection of end of text line

8 views
Skip to first unread message

Gonzalo Medina Arellano

unread,
Feb 14, 2010, 5:03:58 PM2/14/10
to
Hello,

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?

Philipp Stephani

unread,
Feb 14, 2010, 5:19:38 PM2/14/10
to

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.

Gonzalo Medina Arellano

unread,
Feb 14, 2010, 7:47:37 PM2/14/10
to
Thank you very much.

Peter Flynn

unread,
Feb 15, 2010, 3:43:13 PM2/15/10
to

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

Donald Arseneau

unread,
Feb 16, 2010, 2:02:19 AM2/16/10
to
On Feb 15, 12:43 pm, Peter Flynn <peter.n...@m.silmaril.ie> wrote:

> 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.

0 new messages