我编写了自己的命令,将首字母放大。
但后来我发现 lettrine 包可以做更多有趣的事情。现在我想要一个环境或一个命令来处理各种情况:
正常情况
仅包含一个字母的情况(灾难性退出)
包含先前内容的案例(例如数字)
带引号的案例,如果可能的话,将内容与 csquotes 包中的 \ textquote 合并
这是我的 EMV:
\documentclass[ebook,10pt,twoside,openright,showtrims]{memoir}
\usepackage{lipsum}
\usepackage{xcolor}
\usepackage{lettrine}
\newcommand*\ruleline[1]{\par\noindent\raisebox{.8ex}{\makebox[\linewidth]{{\color{red}\hrulefill}\hspace{1ex}\raisebox{-.8ex}{#1}\hspace{1ex}{\color{red}\hrulefill}}}}
\renewcommand\subsubsecheadstyle{\Large\noindent\ruleline}
\renewcommand{\LettrineFontHook}{\color{red}}
\newenvironment{body}{%
\addvspace{\topsep}% Space above
}{%
\unskip\par
\addvspace{\topsep}% Space below
%\needspace{15\baselineskip}
}
\begin{document}
\begin{body}
\lettrine[findent=.3em]{A}{l} \lipsum[1] %1. normal case
\end{body}
\begin{body}
\lettrine[findent=.3em]{Y} \lipsum[2]] %2. case unique character (disaster)
\end{body}
\begin{body}
\lettrine[findent=.3em, ante={1. }]{C}{on} \lipsum[3] %3. case with "ante" content (number)
\end{body}
\begin{body}
\lettrine[findent=.3em, ante={"}]{Q}{uoted"} \lipsum[4] %4. case with "ante" (quote)
% who to combine with txtquote{} of csquotes package
\end{body}
\end{document}
这是输出:
我怎样才能自动使用 lettrine,以便或多或少地像这样进行调用:
\mylt {A}{l} more text
\mylt {Y} more text and correction of the disaster on this case
\mylt {1. }{C}{on} more text (here 1. is the content for "ante"
\mylt ****No idee how to manage the quotes and combine with csquotes
答案1
我可以使用以下命令来完成此操作:
\makeatletter
\def\ltr{\@ifnextchar[{\@with}{\@without}}
\def\@with[#1]#2{\lettrine[findent=.3em, ante={#1}]{#2}}
\def\@without#1{\lettrine[findent=.3em]{#1}}
\makeatother
通过这种方式,我可以简化我对 lettrine 的使用,根据所暴露的不同情况,在源代码中写入以下内容:
\ltr {A}{b}
\ltr [For ant=] {A}{b}
... etc
对于这种情况textquote{}
,由于对于我有限的知识来说它似乎很复杂,所以我选择直接在文本中放置开始和结束引号的类型。
解决方案的一个示例:
\documentclass[ebook,8pt,twoside,openright,showtrims]{memoir}
\usepackage{lipsum}
\usepackage{xcolor}
\usepackage{lettrine}
\usepackage{csquotes}
\setulmarginsandblock{1.5cm}{1.5cm}{*}
\setlrmarginsandblock{4cm}{1.5cm}{*}
\checkandfixthelayout
\renewcommand{\LettrineFontHook}{\color{red}}
\newenvironment{body}{%
\addvspace{\topsep}% Space above
}{%
\unskip\par
\addvspace{\topsep}% Space below
%\needspace{15\baselineskip}
}
\makeatletter
\def\ltr{\@ifnextchar[{\@with}{\@without}}
\def\@with[#1]#2{\lettrine[findent=.3em, ante={#1}]{#2}}
\def\@without#1{\lettrine[findent=.3em]{#1}}
\makeatother
\begin{document}
\begin{body}
\ltr{A}{l} \lipsum[1] %1. normal case
\ltr{Y}{} \lipsum[2] %2. case unique character (thanks @DG')
\ltr[1. ]{C}{on} \lipsum[3] %3. case with "ante"
\ltr[«]{Q}{uoted»} \lipsum[4] %4. case with quotes, the same solution for case 3
\end{body}
\end{document}
输出: