如何将二次定义的文字推出页边距

如何将二次定义的文字推出页边距

我正在编写一份文档,其中我想在主要使用的字母之外加入一个辅助字母。

考虑一下代码

\documentclass{book}
\usepackage{fontspec}
\usepackage{xcolor} % für farbigen Text
\usepackage{lettrine}
\usepackage{lipsum}
\usepackage[sfdefault]{cabin}

\newcommand{\SecondaryLettrine}[5][]{%
  \begingroup
  \renewcommand{\LettrineFontHook}{\normalfont#2}%
  \lettrine[#1]{#4}{\normalfont#3#5}%
  \endgroup
}

\newcommand{\LettrineA}[2]{%
  \SecondaryLettrine[lines=3,lhang=0,findent=.15em]
    {\normalfont}
    {\scshape}
    {\color{black}#1}
    {#2}%
}

\begin{document}
\Large
\thispagestyle{empty}
\setmainfont{cabin} 

\noindent This is a non-indented leadoff sentence.
\vskip 10pt
\LettrineA{H}{ow} may I put the drop cap entirely to the right of the left-hand margin of the page?---lhang=0 in the preamble seems to have no effect. \lipsum[12]
\end{document}

产生

在此处输入图片描述

我不知道为什么新定义的字母没有从非缩进段落的起始位置开始。此外,lhang=0在序言中似乎没有效果。

问题:我该如何纠正这个问题,以便定义的字母从非缩进段落的开始位置开始?我用编译代码lualatex

谢谢。

答案1

\lettrine需要在段落开始前使用,并且其设置需要在整个段落的范围内,因此段落形状在结尾处有效。您的示例\lettrine在第一行之后,并且在使用 letterine 之前就结束了一个组。最安全的做法是删除分组,但我保留了它,但在这里推迟了组的结束,因为我不知道该组的意图。

在此处输入图片描述

\documentclass{book}
\usepackage{fontspec}
\usepackage{xcolor} % für farbigen Text
\usepackage{lettrine}
\usepackage{lipsum}
\usepackage[sfdefault]{cabin}

\newcommand{\SecondaryLettrine}[5][]{%
  \begingroup
  \renewcommand{\LettrineFontHook}{\normalfont#2}%
  \lettrine[#1]{#4}{\normalfont#3#5}%
  \def\par{\endgraf\endgroup}%
}

\newcommand{\LettrineA}[2]{%
  \SecondaryLettrine[lines=3,lhang=0,findent=.15em]
    {\normalfont}
    {\scshape}
    {\color{black}#1}
    {#2}%
}

\begin{document}
\Large
\thispagestyle{empty}
\setmainfont{cabin} 

\noindent This is a non-indented leadoff sentence.

\vskip 10pt
\LettrineA{H}{ow} may I put the drop cap entirely to the right of the left-hand margin of the page?---lhang=0 in the preamble seems to have no effect. \lipsum[12]
\end{document}

相关内容