我想將下一行縮排精確指定的位置

我想將下一行縮排精確指定的位置

我正在排版整個數學講座腳本,為了可讀性,我通常需要縮進一兩行一定的量,這總是不同的。我希望有某種方法可以透過表中的 & 或任何其他控製字元來控制下一行的縮排。但我不想使用表格,我希望它看起來像普通文字。顯然,它必須在數學環境內部和外部工作,因為它們經常出現在該專案的文本中。

它應該看起來像這樣:

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

在此輸入影像描述

相關內容