我对 LaTeX 还比较陌生,正在为朋友的填色书排版。我使用的是“回忆录”类。我想在图片下添加“中世纪”风格的文字,所以我使用了 lettrine 包,但必须在 Tikz 环境中使用 lettrine(因为我插入插图的方式)。
我的问题是在 Tikz 节点中,lettrine 无法正常工作(也就是说,dropcap 后的文本没有正确对齐,而是以一种有趣的方式对齐,如最小工作示例所示)。
我真正想要的是让文本在首字下沉后正确地环绕,而不是像在最小工作示例中那样全部对齐在其余文字的“下方”。
\documentclass[12pt]{memoir}
%%%%%%Here the packages %%%%%%%%%%%%%
\usepackage{graphicx}
\usepackage{tikz-cd}
\usepackage{lettrine}
\usepackage{Carrickc}
\usepackage[absolute]{textpos}
\begin{document}
\begin{textblock*}
{\paperwidth}(0mm,0mm)
\begin{figure}
\centering
\begin{tikzpicture}
\node[] at (0,0) {\includegraphics[width=0.71\textwidth]{picture.png}};
\node[text width=8cm] at (0.45,-2.3) {\renewcommand\LettrineFontHook{\Carrickc} \setlength{\DefaultNindent}{0pt} \lettrine[lines=2]{O}{n}ce long ago there was some random text, and I am writing it here now to make a minimal working example. Thanks for your help!};
\end{tikzpicture}
\end{figure}
\end{textblock*}
\end{document}
我不知道其他细节可能还重要---我正在使用 LuaLaTeX 进行编译,并使用 TexWorks!
非常感谢您的任何建议或帮助!非常感谢。
答案1
这是实现此目的的方法。一些备注:
- 我使用
\def
来处理长文本,因为它\newcommand
似乎不太频繁地与 Tikz 配合 - 第一个例子是普通的 LaTeX 文本,使用文本两次
- 使用 Tikz,里面的参数
{}
可以是常规的 LaTeX 文本 - 你需要一个
\parbox
让它lettrine
正确运作 - 看pgfmanual 中的第 17.4.3 章了解手动和自动休息
node text
将和的宽度设置\parbox
为相同的值可能会出现潜在问题
附言:当您将宽度未知的文本传递给 Tikz 中的节点时,使用类似的样式定义mine
是可行的方法。
但是,使用\parbox
内部已经确定了文本宽度,并且 Tikz 调整了节点高度。
所以,我的风格已经过时了,而且\node {\parbox{..}{whatever}};
足够了。
\documentclass{article}
\usepackage{lettrine,tikz}
% ~~~ shortcuts ~~~~~~~~~~~~~~~
\def\nce{nce long ago there was some random text, and I am writing it here now to make a minimal working example. Thanks for your help!}
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\begin{document}
\noindent \lettrine[lines=2,realheight=true]{O}{}\nce{} O\nce{}
\bigskip\bigskip
\begin{tikzpicture}[
mine/.style={text width=5cm,align=flush left},
]
\node[mine] at (0,-2) {
\parbox{5cm}{
\lettrine[lines=2,realheight=true]{O}{}\nce{}
}
};
\end{tikzpicture}
\end{document}