设置自定义环境的宽度

设置自定义环境的宽度

我正在尝试制作一个信件模板(我不想使用现有的模板),并尝试为顶部的地址创建一个环境。我希望它具有一定的宽度并位于页面的右侧,但左对齐。

我不知道该怎么做。在 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

您的问题已在 设置算法环境的宽度(最好是文档宽度)。它只是使用minipages。

最终的代码看起来应该是这样的:

\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} 

相关内容