我试图将花饰放在缩进段落的开头,而不将第一行的文本向前推。
我希望花饰与段落左边距齐平,同时保留段落第一行的缩进。
我不知道该怎么做。如果我将花饰放在段落前面,我就会得到预期的结果:
以下是生成该图像的代码:
\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 实现使用相同的定义。)