Я набираю целый сценарий лекции по математике, где для удобства чтения мне часто требуется сделать отступ только одной или двух строк на определенное количество, что ВСЕГДА отличается. Я хотел бы иметь какой-то способ контролировать отступ следующей строки с помощью &, как в таблицах, или любого другого управляющего символа. Я не хочу использовать таблицы, я хочу, чтобы это выглядело как обычный текст. Очевидно, что это должно работать внутри и вне математических сред, поскольку они довольно часто встречаются в тексте для этого проекта.
Это должно выглядеть примерно так:
This is the first line.
One more line.
And another.
При этом управляющие символы находятся перед «is» и «line».
Есть ли простое в использовании решение? Мне все равно, если его сложно настроить один раз, главное, чтобы пользоваться им было просто каждый раз.
решение1
Большинство компиляторов TeX предоставляют функцию \pdfsavepos
, которая позволяет записывать позицию на странице отправки. Она была введена в 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> \)
внутри \rlap
, чтобы вернуться в математический режим.
решение4
Еще один вариант —tabto
package. Он требует от вас явного определения позиций табуляции, но имеет преимущество в работе с границами абзацев, поэтому его можно использовать, например, со списками элементов:
\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}