I found this old topic by search. Karl's answer did not work for me (or the OP). But as with the OP, there may be other things happening in my custom document class that interferes with Karl's answer. I took a quick look myself, and I doubt if \lettrine
and \FirstLine
will ever play nicely together, in all cases.
The only satisfactory solution is to "do it manually." But there is a trick: Do not place the small-caps text as the second mandatory argument of \lettrine
. Instead, use empty braces to absorb the second mandatory argument. Then follow with \textsc{text in small caps} more text...
The \lettrine
command places its second mandatory argument in a box. That means it cannot break where the line wrap needs to be. If you attempt to force a break, then the first line may be too short or too long.
But when you use \textsc
its contents can wrap, and can also hyphenate. So, in \textsc
place more text than you think you need for the first line. Compile, and see where it wraps. Then reduce the amount of text in \textsc
to that point. You can end the \textsc
in the middle of a word, and it will hyphenate nicely.
\documentclass[letterpaper]{article}
\usepackage{lmodern} % scalable font
\usepackage{lettrine}
\begin{document}
\lettrine[lines=3,findent=0pt,nindent=0pt]{O}{}\textsc{ne dark and stormy night, Lord Withens mounted his horse} and sneaked out the servants' door. Don't know what gave him the idea that the servants didn't notice. But then, the servants know how to keep it quiet. That's how it is in these British novels.
\end{document}

Concluding \textsc
after "horse" was a matter of trial and error.
ADVANCED: The following does not work with pdflatex
. But it does work using LuaLaTeX
with fontspec
, polyglossia
, and microtype
active. The font is an Open Type font, and \textsc
is defined to select small caps from the font's own Open Type feature, using fontspec
. How much of that is essential, I do not know; but it seems to me that if you use some of that, you'd probably use all of it, as I do.
Once again, the trick is to use blank braces to absorb the second argument of \lettrine
, than manually choose the first line in small caps using \textsc
. But unlike basic pdflatex
, you can break the first line at the hyphenation point in the middle of a word, if necessary.
In this example, a preliminary compile shows that the first line breaks as ECTOXYLO-PHONE:
\lettrine[lines=3,findent=0.2em]{O}{}\textsc{ne stormy night, Lord Withens rode his ectoxylophone through the gloom.} What's that? Don't know what an ectoxylophone is, eh? Neither did Lord Withens. He thought it was his horse.
Then, the closing brace is moved to the hyphenation point:
\lettrine[lines=3,findent=0.2em]{O}{}\textsc{ne stormy night, Lord Withens rode his ectoxylo}phone through the gloom. What's that? Don't know what an ectoxylophone is, eh? Neither did Lord Withens. He thought it was his horse.

\FirstLine
is not patchable neither with\patchcmd
nor with\xpatchcmd
... That's why I've rewritten it completely.