Estoy escribiendo un guión completo de una conferencia de matemáticas, donde la legibilidad a menudo requiere que debo sangrar solo una línea o dos por una cantidad determinada, que SIEMPRE es diferente. Me gustaría tener alguna forma de controlar la sangría de la siguiente línea mediante un & como en las tablas o cualquier otro carácter de control. Sin embargo, no quiero utilizar tablas, quiero que parezca texto normal. Obviamente tiene que funcionar dentro y fuera de los entornos matemáticos, ya que aparecen en el texto con bastante frecuencia para este proyecto.
Debería verse así:
This is the first line.
One more line.
And another.
Con los caracteres de control delante de "es" y "línea".
¿Existe una solución fácil de usar? No me importa si es complicado de configurar una vez, siempre que el uso sea sencillo en todo momento.
Respuesta1
La mayoría de los compiladores TeX proporcionan la función \pdfsavepos
que permite registrar la posición en la página de envío. Se introdujo en pdfTeX y hoy en día está disponible en pdfTeX, en ambos modos DVI y PDF, XeTeX y LuaTeX.
Como se desconoce la posición, antes de que se genere la página, se necesita algún tipo de sistema de referencia. El paquete zref-savepos
del proyecto zref
proporciona una interfaz para la \pdfsavepos
función.
\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}
Algunas observaciones:
Los nombres de las etiquetas se eligen automáticamente con la ayuda de un contador. Esto facilita el uso, porque el usuario no necesita inventar nombres de etiquetas únicos.
Los datos de posición interna son números enteros con unidad implícita
sp
.\zref@refused
marca la referencia como se utiliza para permitir a LaTeX la notificación de referencias indefinidas.
Respuesta2
Para completar, \phantom{<stuff>}
también existe la posibilidad:
\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
es obligatorio si el párrafoempiezacon \phantom
.
Respuesta3
Modo texto
Podrías usar el tabbing
medio ambiente:
\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}
Producción:
Modo matemático
Para matemáticas, sugeriría el alignat
entorno:
\begin{alignat*}{2}
\textrm{This } & \rlap{is the first line.} & & \\
& \textrm{One more } & &\textrm{line.} \\
& & &\textrm{And another.}
\end{alignat*}
Producción:
Úselo \(\displaystyle <math> \)
dentro \rlap
para volver al modo matemático.
Respuesta4
Otra opción más es latabto
paquete. Requiere que usted defina explícitamente las posiciones de las tabulaciones, pero tiene la ventaja de trabajar sobre los límites de los párrafos, por lo que puede usarse, por ejemplo, con listas detalladas:
\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}