在 Tikz 环境中使用 lettrine 的问题

在 Tikz 环境中使用 lettrine 的问题

我对 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}

相关内容