在段落缩进中放置花饰而不改变间距?

在段落缩进中放置花饰而不改变间距?

我试图将花饰放在缩进段落的开头,而不将第一行的文本向前推。

我希望花饰与段落左边距齐平,同时保留段落第一行的缩进。

我不知道该怎么做。如果我将花饰放在段落前面,我就会得到预期的结果:

在此处输入图片描述

以下是生成该图像的代码:

\documentclass{article}
\usepackage{lipsum}
\usepackage{fontspec}
\newcommand{\fleuron}{{\setmainfont{HoeflerText-Fleurons}1}}
\setlength{\parindent}{1cm}

\begin{document}
\fleuron \lipsum[1]
\end{document}

借助 MS Paint 的神奇功能,我在文档中精确描绘出了我想要的内容:

在此处输入图片描述

实现这一目标的最佳方法是什么?

答案1

您可以将花饰设置为延伸至的零宽度框的一部分\parindent

在此处输入图片描述

\documentclass{article}
\usepackage[nopar]{lipsum}% Just for this example
\setlength{\parindent}{1cm}
\newcommand{\fleuron}{\textbullet}% My fleuron
\newcommand{\insertparfleuron}{\makebox[0pt][r]{\makebox[\parindent][l]{\fleuron}}}
\begin{document}
\insertparfleuron
\lipsum[1]

\lipsum[2]
\end{document}

\makebox进入 TeX 的水平模式,因此必然开始段落。

答案2

可能更简单,只需写:

\noindent\rlap{...}\indent

或者 ...

\noindent\makebox[1cm][l]{... }

或者自动:

\everypar{\hspace{-1cm}\rlap{...}\indent}

梅威瑟:

\documentclass{article}
\usepackage{lipsum}
\usepackage{fourier-orns}
\parindent1cm\parskip1em
\begin{document}
\noindent\rlap{\decotwo}\indent\lipsum[2]  % or ...
\noindent\makebox[1cm][l]{\decotwo}\lipsum[2]  % or ...
\everypar{\hspace{-1cm}\rlap{\decotwo}\indent}\lipsum[3-120]
\end{document}

平均能量损失

但也许你想要一种自动但模糊的模式(你知道,为了迷惑敌人......);)

\everypar={\setbox0=\lastbox\hbox to 1cm\decotwo}

答案3

这是另一种方法:

从垂直模式开始,

\leavevmode\kern-\parindent
\rlap{<fleuron>}%
\kern\parindent\relax

机制是:
开始段落;
向左移动 的量\parindent
在零宽度框中插入花饰;
向右移动 的量\parindent

(如果你把它分成几行,就像这里做的那样,别忘了需要 %忽略行尾的空格。)

有人可能会抱怨说这不是“latex”的做事方式,但是很容易遵循(或推导)步骤,并且它可以与纯tex 一起使用。

\rlap请注意,在纯文本中不是让您退出垂直模式,因此向左留出空间。(egreg 向我保证其 latex 实现使用相同的定义。)

相关内容