TransWikia.com

Automated lettrine and commands

TeX - LaTeX Asked on May 1, 2021

I need to automatically place lettrines on a text I don’t want to edit directly.

So far I have been using

defdrop #1#2 {% note the space before {
  lettrine{#1}{#2} % a trailing space
}

and

drop Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sagittis vitae massa nec gravida. Fusce quis porttitor leo. 

The problem is that some paragraphs start with a command, e.g:

marginnote{Foo} Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sagittis vitae massa nec gravida. Fusce quis porttitor leo.

In these cases various errors are returned; I have tried with expandafter but with no luck.

How can I make Latex use the first "real" word for the lettrine, i.e. ignoring the (eventually) preceding command?

One Answer

This approach examines the catcode of the token following drop. If it is a command (catcode 0), it executes the 1st blob of tokens up to the first space and then reissues drop again. Therefore you can't accidentally leave spaces between arguments of a leading macro, e.g., rule{1ex} {2ex}, or the inter-space will scrog the argument absorption. Generally, this is not an issue, and won't affect commands taking a single argument.

documentclass{article}
usepackage{lettrine,marginnote}
defdrop #1#2 {% note the space before {
  ifcatnoexpandrelaxnoexpand#1defnext{#1{#2}drop}else
  defnext{lettrine{#1}{#2} }fi% a trailing space
  next
}
begin{document}
drop Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sagittis vitae massa nec gravida. Fusce quis porttitor leo. 

The problem is that some paragraphs start with a command, e.g:

drop marginnote{Foo in the margin} Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sagittis vitae massa nec gravida. Fusce quis porttitor leo.
end{document}

enter image description here

Correct answer by Steven B. Segletes on May 1, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP