![!Lettrine 中未定义的控制序列](https://linux22.com/image/439881/!Lettrine%20%E4%B8%AD%E6%9C%AA%E5%AE%9A%E4%B9%89%E7%9A%84%E6%8E%A7%E5%88%B6%E5%BA%8F%E5%88%97.png)
我正在使用以下代码通过 lettrine 删除 cap:
\usepackage{ebgaramond}
\usepackage{titlesec}
\usepackage{xcolor}
\usepackage{lipsum}
\usepackage[portuguese]{babel}
% Compile with XeLaTeX or LuaLaTeX
% Drop Cap
\usepackage{lettrine}
\usepackage{type1cm}
\usepackage{xstring}
\makeatletter
\let\ltx@@chapter\@chapter
\def\@chapter[#1]#2 #3 {\ltx@@chapter[#1]{#2}
\lettrine[lines=2, findent=1pt, nindent=1pt, slope=4pt]{\StrLeft{#3}{1}}{\@gobble#3}\ }
\renewcommand{\LettrineTextFont}{\textnormal}
\makeatother
\begin{document}
\chapter[Testes para uma ou duas Populações]{Testes para uma \\ou duas Populações}\label{ch:testdpop}
This is an example. \lipsum[1].
\end{document}
但我遇到了这个错误:
! Undefined control sequence.
\xs_StrLeft__ ..._expand \xs_arg_ii }}{}}\xs_call
l.24 This is an example. \lipsum[1].
我确实得到了预期的结果,但我对错误感到困惑...有什么想法吗?提前致谢!
答案1
命令xstring
不可展开。您应该先获取第一个字母,然后再将其传递给\lettrine
。
\documentclass{book}
\usepackage{ebgaramond}
\usepackage{titlesec}
\usepackage{xcolor}
\usepackage{lipsum}
\usepackage[portuguese]{babel}
% Compile with XeLaTeX or LuaLaTeX
% Drop Cap
\usepackage{lettrine}
%\usepackage{type1cm}% Why?
\usepackage{xstring}
\makeatletter
\let\ltx@@chapter\@chapter
\def\@chapter[#1]#2 #3 {%
\ltx@@chapter[#1]{#2}
\StrLeft{#3}{1}[\jpmd@temp]%
\lettrine[lines=2, findent=1pt, nindent=1pt, slope=4pt]{\jpmd@temp}{\@gobble#3}\ }
\renewcommand{\LettrineTextFont}{\textnormal}
\makeatother
\begin{document}
\chapter[Testes para uma ou duas Populações]{Testes para uma \\ou duas Populações}\label{ch:testdpop}
This is an example. \lipsum[1].
\end{document}
另一方面,这很容易出错,明确使用\lettrine
会更好。
\documentclass[a4paper]{book}
\usepackage[portuguese]{babel}
\usepackage{ebgaramond}
\usepackage{titlesec}
\usepackage{xcolor}
\usepackage{lipsum}
% Compile with XeLaTeX or LuaLaTeX
% Drop Cap
\usepackage{lettrine}
\newcommand{\start}[1]{\lettrine[lines=2, findent=1pt, nindent=1pt, slope=4pt]{#1}{}}
\begin{document}
\chapter[Testes para uma ou duas Populações]
{Testes para uma \\ou duas Populações}\label{ch:testdpop}
\start{T}his is an example. \lipsum[1].
\end{document}
笔记。你永远不应该加载type1cm
,因为它已经过时了。在完全没有意义的场合更不应该加载,比如 (Xe|Lua)LaTeX。