自动将章节首字母首字下沉

自动将章节首字母首字下沉

我正在撰写论文,我想将每个部分的第一个单词自动转换为首字下沉。

我知道如何使用 lettrine 包手动执行此操作。但我想自动执行此操作。每个部分都以普通单词开头,文本前没有引号或花哨的内容。

\section{What is Lorem Ipsum?}
    
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula purus ac ligula consectetur porta. Mauris eget condimentum magna. Vivamus tempus lacus dolor, nec pharetra massa porttitor in. Nunc fermentum tellus at orci lobortis gravida. Sed eget quam vel ante scelerisque venenatis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vivamus a quam mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut quam est, molestie eget leo eu, aliquam tincidunt urna. Nulla facilisi.

我尝试过应用这个解决方案自动将章节首字母首字下沉没有成功。

注意:我使用 pdflatex。

这是我尝试过但没有成功的宏:

\usepackage{lettrine}
\usepackage{xstring}

\makeatletter
\let\ltx@@section\@section
\def\@section[#1]#2 #3 {\ltx@@section[#1]{#2}\lettrine[nindent=0em]{\@tempa}{\@gobble#3}\ }
\makeatother

`

答案1

我不确定这是否可取,但章节标题已经在下一个段落的开头运行代码来控制缩进,所以你可以挂接到那里......

在此处输入图片描述

\documentclass{article}
\usepackage{lettrine}
\makeatletter
\def\@afterheading{%
  \@nobreaktrue
  \everypar{%
    \if@nobreak
      \@nobreakfalse
      \clubpenalty \@M
      \if@afterindent \else
        {\setbox\z@\lastbox}%
      \fi
 \ifdim\@tempskipa=\glueexpr 2.3ex \@plus.2ex\relax % article section spacing (test ignore plus component)
     \expandafter\expandafter\expandafter\zzz
\fi
    \else
      \clubpenalty \@clubpenalty
      \everypar{}%
    \fi}}
\makeatother

\def\zzz#1 {\zzzB#1{} }
\def\zzzB#1#2 {\lettrine{#1}{#2} }

\begin{document}

\section{abc}

Once upon a time.
Red yellow black blue white green.
Red yellow black blue white green.
Red yellow black blue white green.
Red yellow black blue white green.

\subsection{No lettrine for subsec}
Normal text


\section{xyz}

The second section.
Red yellow black blue white green.
Red yellow black blue white green.
Red yellow black blue white green.
Red yellow black blue white green.

\subsection{No lettrine for subsec}
Normal text


\end{document}

相关内容