정확히 지정된 위치로 다음 줄을 들여쓰고 싶습니다.

정확히 지정된 위치로 다음 줄을 들여쓰고 싶습니다.

나는 전체 수학 강의 스크립트를 조판하고 있는데, 가독성을 높이기 위해 특정 양에 대해 한두 줄만 들여쓰기해야 하는 경우가 많습니다. 이는 항상 다릅니다. 테이블의 &나 기타 제어 문자를 사용하여 다음 줄의 들여쓰기를 제어할 수 있는 방법을 갖고 싶습니다. 하지만 나는 표를 사용하고 싶지 않고 일반 텍스트처럼 보이길 원합니다. 이 프로젝트에서는 수학 환경이 텍스트에 자주 등장하기 때문에 수학 환경 내부와 외부에서 작동해야 합니다.

다음과 같아야 합니다.

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

"is"와 "line" 앞에는 제어 문자가 있습니다.

사용하기 쉬운 솔루션이 있습니까? 매번 사용이 간단하기만 하면 한 번 구성하는 것이 복잡하더라도 상관없습니다.

답변1

\pdfsavepos대부분의 TeX 컴파일러는 출하 페이지의 위치를 ​​기록할 수 있는 기능을 제공합니다 . 이는 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패키지. 탭 위치를 명시적으로 정의해야 하지만 단락 경계에서 작업할 수 있다는 이점이 있으므로 예를 들어 항목별 목록과 함께 사용할 수 있습니다.

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

여기에 이미지 설명을 입력하세요

관련 정보