Quiero sangrar la siguiente línea en una posición exactamente especificada

Quiero sangrar la siguiente línea en una posición exactamente especificada

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 \pdfsaveposque 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-saveposdel proyecto zrefproporciona una interfaz para la \pdfsaveposfunció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}

Resultado

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@refusedmarca 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:

ingrese la descripción de la imagen aquí

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

\leavevmodees obligatorio si el párrafoempiezacon \phantom.

Respuesta3

Modo texto

Podrías usar el tabbingmedio 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:

Salida para modo texto

Modo matemático

Para matemáticas, sugeriría el alignatentorno:

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

Producción:

Salida para modo matemático

Úselo \(\displaystyle <math> \)dentro \rlappara volver al modo matemático.

Respuesta4

Otra opción más es latabtopaquete. 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}

ingrese la descripción de la imagen aquí

información relacionada