소스에서 줄을 건너뛸 수 있는 안전한 장소

소스에서 줄을 건너뛸 수 있는 안전한 장소

\section이상적으로 는 많은 환경(정리, 항목화, 열거 등) 전후, \item목록의 s 사이, 디스플레이 스타일 수학 전후 및 기타 여러 위치에서 줄을 건너뛸 수 있기를 바랍니다. . 소스 코드를 체계적으로 유지하는 데 도움이 됩니다.

불행하게도 Donald Knuth는 건너뛴 줄이 소스 코드에서 의미론적 의미를 가져야 한다고 결정했습니다. 나는 그가 이에 대한 타당한 이유가 있다고 확신하지만, 새 문단을 시작하려면 \par명령이 필요하다면 개인적으로 훨씬 더 행복할 것입니다.

%나는 코드 구성을 위한 전통적인 해결책이 비의미적인 이유로 건너뛴 줄의 시작 부분에 기호를 넣는 것임을 알고 있습니다 .%그러나 이러한 추가 기호는 내 코드를 복잡하게 만들고 순전히 건너뛴 줄보다 유용하지 않다는 것을 알았습니다 .


질문:

기존 LaTeX 문서에서 출력에 영향을 주지 않고 한 줄 이상을 건너뛸 수 있는 위치는 어디입니까?재정의가 허용되면 어떤 곳도 완전히 안전할 수 없다는 것을 알고 있으므로 표준 또는 AMS 문서 클래스 중 하나가 사용 중이고 추가 패키지가 로드되지 않았으며 서문의 유일한 정의가 정리 유형을 정의한다고 가정합니다.

이 질문을 구별하기 위해 한 가지 추가 제약 조건이 있습니다.언제 빈 줄을 안전하게 추가할 수 있나요?:다양한 명령과 환경이 수직 모드에 어떤 영향을 미치는지 모른다고 가정합니다.원한다면 내 질문은 이전 및/또는 이후에 건너뛴 줄이 효과가 없는 방식으로 수직 모드에 영향을 미치는 명령/환경에 대한 (반드시 포괄적이지는 않음) 목록을 요구하는 것입니다.

답변1

연결된 질문의 대답은 수직 모드에 있는 것이 암시된 것만큼 사용자 행동과 밀접하게 연관되어 있지 않은 기술적 구현 세부 사항이기 때문에 약간 오해의 소지가 있습니다. 예를 들어 목록 다음에는 수직 모드에 있지만 라텍스는 목록 동작이 디스플레이 수학 동작(디스플레이 후 수평 모드에 있는 경우)과 일치하도록 빈 줄에 효과를 주기 위해 많은 노력을 기울입니다.

첫째, 동작은 TeX에 적용되지 않으며 현재 catcode 설정에 따라 다릅니다.

TeX는 각 줄에서 시스템 종속 줄 끝 표시를 포함한 모든 공백을 제거합니다(이 부분은~ 아니다사용자 정의 가능) 그런 다음 \endlinechar설정된 경우를 삽입합니다. 일반적으로 LaTeX에서는 ^M입니다. 그러면 the의 catcode가 \endlinechar파일의 일반 문자인 것처럼 사용됩니다. 일반적으로 단일 ^M을 공백처럼 작동하게 하고 두 개의 ^M을 공백처럼 작동하게 만드는 특수 catcode인 catcode 5입니다 \par(몇 가지 세부 사항 생략). 그러나 ^M이 공백처럼 작동할 때 catcode 10을 갖도록 만들거나 \endlinechar=32각 줄 끝에서 단일 공백(줄 끝 없음)이 생성되도록 설정할 수 있습니다.

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

\documentclass{article}

\begin{document}\endlinechar=32

One two    three



four

five

\begin{itemize}

\item one

two \item

three

\end{itemize}

\end{document}

그러나 그렇게 하고 싶지 않고 표준 설정을 유지한다면 규칙은 정말 간단해야 합니다. 즉, 현재 단락을 끝내려는 위치에 빈 줄을 사용하는 것입니다.

따라서 빈 줄은오류수학 모드에서.

빈 줄은 세로(par 모드)에서 \par 단락 표시의 끝을 만듭니다. (그러나 a는 세로 목록의 시작 부분에서 무시되므로 의 시작 부분 과 각 뒤에 \par빈 줄을 두어도 괜찮습니다 \parbox. minipage단락,

당신은해야절대표시 수학 앞에 빈 줄을 넣습니다(TeX는 표시 수학이 항상 문단 사이가 아닌 문단 안에 있어야 한다고 믿습니다. 따라서 앞에 빈 줄을 사용하거나 내부적으로 \[사용되는 다른 것을 사용하면 TeX는 복구 작업과 $$동등한 코드를 삽입하고 \indent$$들여쓰기 상자로 구성된 허위 흰색 선이 표시되지만 디스플레이 앞에 허위 수직 공간처럼 보이는 텍스트는 표시되지 않습니다.

다음 텍스트가 새 단락인지 표시 전 단락의 연속인지에 따라 디스플레이 수학 환경 뒤에 빈 줄을 넣어야 합니다.

라텍스 목록 환경 앞이나 뒤에 빈 줄을 넣으면 환경 뒤의 텍스트는 새 단락을 시작하므로 일반적으로 들여쓰기됩니다. 목록 앞이나 뒤에 빈 줄을 두지 않으면 다음 텍스트가 연속으로 간주됩니다. 목록 앞의 단락.

거의 모든 라텍스 구조는 문자와 같은 방식으로 배치됩니다 X. 사람들은 포함된 이미지를 나란히 또는 위에 표시하는 방법을 묻는 경우가 많습니다. 대답은 다음과 같습니다 X.

X X

X 두 개를 나란히 놓음

X

X

X하나를 다른 단락 위에 별도의 단락에 넣습니다 . 또는 또는 또는 X으로 바꿀 수 있으며 빈 줄과 동일한 상호 작용이 적용됩니다.\includegraphics\fbox\parbox\begin{tabular}...\end{tabular}

답변2

나는 문구 다음에, 즉 구두점 다음에 줄을 나누어 소스를 정리하는 방법을 배웠습니다. 그런 식으로 대부분의 편집은 줄을 섞는 방식으로 이루어지며, 텍스트 편집기는 일반적으로 이를 잘 지원합니다. 추가 보너스로 버전 제어 시스템도 변경된 행을 기준으로 작동하므로 이는 좋은 일치입니다(예: 단어를 추가해도 단락을 다시 채워서 12가지 변경이 발생하지 않으며 변경 사항을 쉽게 발견할 수 있습니다). 예를 들어 기사를 함께 묶으면 개와 같은 실수나 오류를 쉽게 발견할 수 있습니다.

나는 대부분 같은 방식으로 방정식을 작성합니다. 같음(여러 개가 있는 경우)을 정렬하고, 긴 항목을 나누고 들여쓰기하고, 긴 요소가 나타나면 다시 들여쓰기하는 등의 작업을 수행합니다.

요약하자면, 나는 매우 좁은 여백이 있는 프로그램에서 들여쓰기를 하는 것처럼 소스를 들여쓰기 유지하려고 노력합니다(LaTeX는 예를 들어 C로 작성된 수학 표현식보다 훨씬 더 장황합니다). 자연스러운 소스 공백이 원치 않는 단락 구분을 만드는 경우는 매우 드물며, 원치 않는 공백이 발생하지 않도록 논리적 분할을 위해 줄을 %로 끝내야 하는 경우도 있습니다.

어쨌든 이것은 소스 코드입니다. 특히 작가뿐만 아니라 사람들이 읽어야 하는 책입니다. 표준이 아닌 것은 문서를 읽기 어렵게 만들고, 재사용하거나 다른 텍스트와 통합하기 어렵게 만들고, 다른 사람과 공유하기 거의 불가능하게 만듭니다.

관련 정보