Ich möchte die nächste Zeile um eine genau angegebene Position einrücken

Ich möchte die nächste Zeile um eine genau angegebene Position einrücken

Ich setze gerade ein komplettes Skript für eine Mathematikvorlesung, bei dem ich aus Gründen der Lesbarkeit oft nur eine oder zwei Zeilen um einen bestimmten Betrag einrücken muss, der IMMER unterschiedlich ist. Ich hätte gerne eine Möglichkeit, den Einzug der nächsten Zeile durch ein & wie in Tabellen oder ein anderes Steuerzeichen zu steuern. Ich möchte jedoch keine Tabellen verwenden, ich möchte, dass es wie normaler Text aussieht. Es muss offensichtlich innerhalb und außerhalb von Mathematikumgebungen funktionieren, da sie bei diesem Projekt ziemlich oft im Text vorkommen.

Es sollte ungefähr so ​​aussehen:

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

Wobei die Steuerzeichen vor „is“ und „line“ stehen.

Gibt es eine benutzerfreundliche Lösung? Es ist mir egal, ob die einmalige Konfiguration kompliziert ist, solange die Verwendung jedes Mal einfach ist.

Antwort1

Die meisten TeX-Compiler bieten die Funktion \pdfsavepos, die Position auf der Versandseite aufzuzeichnen. Diese Funktion wurde in pdfTeX eingeführt und ist heute in pdfTeX (in beiden Modi DVI und PDF), XeTeX und LuaTeX verfügbar.

Da die Position nicht bekannt ist, wird vor der Ausgabe der Seite eine Art Referenzsystem benötigt. Das Projektpaket zref-saveposstellt zrefeine Schnittstelle zu dieser \pdfsaveposFunktion bereit.

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

Ergebnis

Einige Anmerkungen:

  • Die Bezeichnungen werden mit Hilfe eines Zählers automatisch vergeben. Das erleichtert die Bedienung, da der Benutzer sich keine eindeutigen Bezeichnungen ausdenken muss.

  • Die internen Positionsdaten sind Integer-Zahlen mit impliziter Einheit sp.

  • \zref@refusedmarkiert die Referenz als verwendet, um LaTeX die Benachrichtigung bei undefinierten Referenzen zu ermöglichen.

Antwort2

Der Vollständigkeit halber \phantom{<stuff>}ist auch eine Möglichkeit:

Bildbeschreibung hier eingeben

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

\leavevmodeist erforderlich, wenn der Absatzbeginntmit \phantom.

Antwort3

Textmodus

Sie könnten die tabbingUmgebung nutzen:

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

Ausgabe:

Ausgabe für den Textmodus

Mathe-Modus

Für Mathematik würde ich die alignatUmgebung vorschlagen:

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

Ausgabe:

Ausgabe für den Mathematikmodus

Verwenden Sie \(\displaystyle <math> \)es innen \rlap, um zum Mathematikmodus zurückzukehren.

Antwort4

Eine weitere Möglichkeit ist dietabtoPaket. Es erfordert, dass Sie die Tabulatorpositionen explizit definieren, hat aber den Vorteil, dass es über Absatzgrenzen hinweg funktioniert, sodass es beispielsweise mit Aufzählungslisten verwendet werden kann:

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

Bildbeschreibung hier eingeben

verwandte Informationen