我正在尝试制作一个信件模板(我不想使用现有的模板),并尝试为顶部的地址创建一个环境。我希望它具有一定的宽度并位于页面的右侧,但左对齐。
我不知道该怎么做。在 LaTeX 中创建自定义布局和模板让我很头疼。
我尝试做这样的事情:
\newenvironment{head}
{\leftskip=2cm}
{\leftskip=0cm}
但它不起作用。:/
答案1
由于许多原因,它不起作用。首先,TeX 仅使用一的值\leftskip
,即段落末尾的当前值。其次,您的定义隐藏了赋予的值\leftskip
,因为每个环境都构成一个组:因此当 TeX 找到段落末尾时,它已经忘记了对的设置\leftskip
。如果您想用非零 \leftskip 排版段落,您应该定义
\newenvironment{head}
{\par\setlength{\leftskip}{2cm}\noindent\ignorespaces}
{\par}
第一个\par
结束前面的文本;然后我们设置\leftskip
并应用\noindent
(这需要\ignorespaces
忽略之后的行尾\begin{head}
)。
最后我们发出\par
结束段落的命令,该段落将使用规定的设置进行排版\leftskip
。无需重置\leftskip
为零,因为环境形成的隐式组末尾已经处理好了。
笔记
最好坚持使用\setlength
,因为\leftskip
是一个粘合参数;TeXbook 中有一个例子:尝试并定义
\newenvironment{badidea}
{\par\leftskip=2cm}
{\par}
和写
\begin{badidea}
minuscule chances of error
\end{badidea}
你将会得到一个惊喜。:)
答案2
迷你页面是你的朋友
\documentclass{article}
\begin{document}
\hfill
\begin{minipage}{0.5\linewidth}
Address \\
goes here and is\\
appropriately\\
aligned
\end{minipage}
\end{document}
作为环境:
\newenvironment{letteraddress}{\hfill\begin{minipage}{0.5\linewidth}}{\end{minipage}}
当然,这假设\linewidth
确实已定义。如果您愿意,您可以随时输入明确的宽度...
答案3
您的问题已在 设置算法环境的宽度(最好是文档宽度)。它只是使用minipage
s。
最终的代码看起来应该是这样的:
\documentclass{article}
\newenvironment{head}%
{
\centering
\begin{flushright}
\begin{minipage}{5cm}}%
{
\end{minipage}
\end{flushright}}
\begin{document}
\begin{head}
First line and yeah, the head is right aligned.\\
A second line to show the text inside is left aligned.
\end{head}
Well, here comes the rest of the letter.
\end{document}