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-savepos
stellt zref
eine Schnittstelle zu dieser \pdfsavepos
Funktion 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}
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@refused
markiert 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:
\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
ist erforderlich, wenn der Absatzbeginntmit \phantom
.
Antwort3
Textmodus
Sie könnten die tabbing
Umgebung 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:
Mathe-Modus
Für Mathematik würde ich die alignat
Umgebung vorschlagen:
\begin{alignat*}{2}
\textrm{This } & \rlap{is the first line.} & & \\
& \textrm{One more } & &\textrm{line.} \\
& & &\textrm{And another.}
\end{alignat*}
Ausgabe:
Verwenden Sie \(\displaystyle <math> \)
es innen \rlap
, um zum Mathematikmodus zurückzukehren.
Antwort4
Eine weitere Möglichkeit ist dietabto
Paket. 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}