我想将下一行缩进指定的位置

我想将下一行缩进指定的位置

我正在排版整个数学讲稿,为了便于阅读,我经常需要缩进一两行,但缩进量总是不一样。我希望有某种方式可以通过表格中的 & 或任何其他控制字符来控制下一行的缩进。但我不想使用表格,我希望它看起来像普通文本。显然,它必须在数学环境内外都能正常工作,因为在本项目中,它们经常出现在文本中。

它看起来应该是这样的:

This is the first line.
     One more line.
              And another.

控制字符位于“is”和“line”前面。

有没有一种易于使用的解决方案?我不在乎一次配置是否复杂,只要每次使用都很简单。

答案1

\pdfsavepos大多数 TeX 编译器都提供记录输出页面上位置的功能。该功能在 pdfTeX 中引入,现在可在 pdfTeX(DVI 和 PDF 模式)、XeTeX 和 LuaTeX 中使用。

因为不知道位置,所以在输出页面之前,需要某种参考系统。zref-savepos项目包zref提供了该功能的接口\pdfsavepos

\documentclass{article}
\usepackage{zref-savepos}
\makeatletter
% \zsaveposx is defined since 2011/12/05 v2.23 of zref-savepos
\@ifundefined{zsaveposx}{\let\zsaveposx\zsavepos}{}
\makeatother
\newcounter{hposcnt}
\renewcommand*{\thehposcnt}{hpos\number\value{hposcnt}}
\newcommand*{\SP}{% set position
  \stepcounter{hposcnt}%
  \zsaveposx{\thehposcnt s}%
}
\makeatletter
\newcommand*{\UP}{% use previous position
  \zsaveposx{\thehposcnt u}%
  \zref@refused{\thehposcnt s}%
  \zref@refused{\thehposcnt u}%
  \kern\zposx{\thehposcnt s}sp\relax
  \kern-\zposx{\thehposcnt u}sp\relax
}
\makeatother

\begin{document}

This \SP is the first line\\
     \UP One more \SP line\\
                  \UP And another.

\end{document}

结果

一些评论:

  • 标签名称通过计数器自动选择。这使得使用更加容易,因为用户不需要发明唯一的标签名称。

  • 内部位置数据是具有隐含单位的整数sp

  • \zref@refused将引用标记为已使用,以允许 LaTeX 发出未定义引用的通知。

答案2

为了完整性,\phantom{<stuff>}还有一种可能性:

在此处输入图片描述

\documentclass{article}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\setlength{\parindent}{0pt}% For this example.
\begin{document}
\lipsum[2]% Some dummy text.

This is the first line. \par
\leavevmode\phantom{This }One more line. \par
\leavevmode\phantom{This One more }And another.

\lipsum[2]% Some dummy text.
\end{document}

\leavevmode如果段落开始\phantom

答案3

文本模式

您可以使用以下tabbing环境:

\documentclass{article}

\newenvironment{Tabbing}{% see http://tex.stackexchange.com/a/16389/16595
    \vspace{-\baselineskip}%
    \setlength{\topsep}{0pt}\setlength{\partopsep}{0pt}\tabbing%
}{\endtabbing}

\begin{document}
\noindent This is a line before the \verb|Tabbing| environment.
\begin{Tabbing}
    This \= One more \=\kill\\
    This \> is the first line. \\
         \> One more line. \\
         \>        \>And another.
\end{Tabbing}
This is a line after the \verb|Tabbing| environment.
\end{document}

输出:

文本模式输出

数学模式

对于数学我建议的alignat环境:

\begin{alignat*}{2}
\textrm{This } & \rlap{is the first line.} & & \\
               & \textrm{One more }        & &\textrm{line.} \\
               &                           & &\textrm{And another.}
\end{alignat*}

输出:

数学模式的输出

使用\(\displaystyle <math> \)内部\rlap返回数学模式。

答案4

另一个选择是tabto包。它要求您明确定义制表符的位置,但其优点是可以跨越段落边界,因此它可以用于例如逐项列表:

\documentclass{article}
\usepackage{tabto}


\begin{document}
  This \tabto{4em}is the first line. \\
  \tabto{4em}One \tabto{7em}more line. \\
  \tabto{7em}And another.

  \begin{itemize}
    \TabPositions{1cm,2cm}
    \item This \tab is the first line. 
    \item \tab One \tab more line. 
    \item \tab\tab And another.
  \end{itemize}

\end{document}

在此处输入图片描述

相关内容