我对食谱中的lettrine
和的组合有疑问。wrapfig
xcookybooky
我的问题源于两个包之间的交互。如果我创建如下所示的食谱,即使配料包装已完成,段落仍会保持该宽度。这会在文档中产生难看的空白。
为了解决这个问题,我偶然发现了 David Carlisle 的解决方案,它使用一些花哨的 LaTeX 来组合两个段落形状(参见Lettrine 和 Wrapfig)。这种方法效果很好,但仍然存在问题。每当配料表的结尾与新的准备步骤的开始相重合时,就会引发错误。
这可以通过减少成分列表的长度(即的高度wrapfig
)在以下 MWE 中复制。我已设法使用条件内的 shift 命令将受影响的行数减少 1 valign
,但问题仍然存在于每个段落的前两行。
回到我的问题是,有没有办法修复命令\wflettrine
以使其工作?或者有另一种方法可以解决根本问题?
\documentclass{article}
\usepackage{graphicx}
\usepackage{lettrine}
\usepackage{wrapfig}
\usepackage{lipsum}
\usepackage{xcookybooky}
%------------------------------------------------
% Modification of lettrine for wrapfig
%------------------------------------------------
% Courtesy of David Carlisle: https://tex.stackexchange.com/questions/119688/lettrine-and-wrapfig
\newdimen\tttaa
\newdimen\tttbb
\makeatletter
\def\merge@ps{\afterassignment\merge@ps@\tttbb}
\def\merge@ps@{\afterassignment\merge@ps@@\tttaa}
\def\merge@ps@@{%
% \afterassignment\reset@WF@ps\dimen@\WF@ps\valign
\ifnum\count@>\@ne
\afterassignment\reset@WF@ps\dimen@\WF@ps\valign % <-- moving to here increases the lines available by one
\advance\count@\m@ne
\expandafter\merge@ps
\fi%
}
\def\reset@WF@ps{\afterassignment\reset@WF@ps@\dimen@ii}
\def\reset@WF@ps@#1\valign{%
\edef\new@wf@ps{
\new@wf@ps
\the\dimexpr\dimen@+\tttbb\relax\space
\the\dimexpr\dimen@ii-\tttbb\relax\space%
}%
\def\WF@ps{#1}%
}%
\newcommand\wflettrine[3][]{%
\setbox\tw@\hbox{\lettrine[#1]{#2}{#3}\global\let\gtmp\L@parshape}%
\afterassignment\wf@getoffset\count@\gtmp\hoffset
\setbox\WF@box\hbox{\kern-\dimen@\box\WF@box\kern\dimen@}%
\noindent\copy\tw@
\def\new@wf@ps{}%
\afterassignment\merge@ps\count@\gtmp
\edef\WF@ps{\new@wf@ps\space\WF@ps}%
\@@parshape\c@WF@wrappedlines\WF@ps\z@\columnwidth%
}
\def\wf@getoffset{\wf@get@ffset\dimen@}
\def\wf@get@ffset#1\hoffset{}
\makeatother
%------------------------------------------------
% Update of xcookybook for wrapping steps
%------------------------------------------------
\renewcommand{\step}{%
\par
\stepcounter{step} % <-- moved here, since shouldn't be in the argument of lettrine
\wflettrine[%
lines=2,
lhang=0, % space into margin, value between 0 and 1
loversize=0.15, % enlarges the height of the capital
slope=0em,
findent=1em, % gap between capital and intended text
nindent=0em % shifts all intended lines, beginning with the second line
]{\thestep}{}%
}
\newcommand{\ing}{1 tsp & some ingredient}
%------------------------------------------------
% Document
%------------------------------------------------
\begin{document}
\begin{recipe}{Example Recipe}
\ingredients[5]{%%%% <-- CHANGE TO 4 TO SEE ERROR %%%%
\ing\\\ing\\\ing\\\ing
}
\preparation{%
\step xxx
\step yyy
\step \lipsum[1]
\step \lipsum[1]
\step \lipsum[1]
}
\end{recipe}
\end{document}