끌 수 있는 열거 환경 만들기

끌 수 있는 열거 환경 만들기

이 질문으로 인해 새로운 패키지가 탄생했습니다.
comment_io

컴파일하기 전에 켜고 끌 수 있는 열거 환경을 사용하여 문서를 만들고 싶습니다.

예를 들어 다음과 같은 섹션이 있다고 가정해 보겠습니다.

\begin{enumerate}
    \item This is a test.
    \item This is another test.
    \item This is yet another test.
\end{enumerate}

이는 일반적인 상황에서 다음과 같이 세 가지 항목이 포함된 열거 목록으로 컴파일됩니다.

1. This is a test.
2. This is another test.
3. This is yet another test.

컴파일된 출력이 다음과 같이 보이도록 특정 열거 환경을 사라지게 하는 방법을 원합니다.

This is a test. This is another test. This is yet another test.

또한 다양한 환경에 대해 전역적으로 이 작업을 수행할 수 있기를 원합니다(즉, 로컬 수준에서 해당 환경의 각 인스턴스를 편집할 필요가 없음).

그러나 나는 내 문서에 그대로 남아 있는 다른 열거 환경을 가질 수 있기를 원합니다(사라지는 환경 내에 중첩되어 있더라도).

맥락: 나는 열거된 계층 구조에 각 섹션을 배치하는 Tractatus 스타일을 사용하여 텍스트를 작성하고 싶습니다. 그러나 이 열거형을 제거하고 텍스트를 일반 기사로 표시하고 싶습니다. 마지막으로, 이 정규 기사에서는 열거된 목록을 표시하는 기능을 갖고 싶습니다(그러면 Tractatus 열거의 일부가 아닙니다).

답변1

중첩된(또는 다른 목록) 환경이 계속 작동하도록 허용하려면 이 새로운 on-off 내에서 이를 무작동으로 만들 것인지 enumerate캡처해야 합니다 . 이를 위해 우리는 정의를 프리앰블에 저장하고 매 시작 시 사용하도록 다시 설정합니다.\itemenumerateenuemrate 이를 위해 우리는 정의를 프리앰블에 저장하고 모든 사용etoolbox\AtBeginEnvironment. 다른 목록도 중첩하려면 복원해야 합니다.\item 비슷한 방식으로 복원해야 합니다.

enumerate*아래에서는 컴파일 중에 꺼지는 기능을 정의했지만 여전히 중첩된 enumerates를 지원합니다.

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

\documentclass{article}
\usepackage{etoolbox}
\AtBeginEnvironment{enumerate}{\let\item\olditem}
\let\olditem\item
\newenvironment{enumerate*}
  {\par\let\item\relax}
  {\par}
\begin{document}

\begin{enumerate*}
  \item Something
    \begin{enumerate}
      \item Something else
      \item Another thing
        \begin{enumerate*}
          \item This is it
          \item This is another it
        \end{enumerate*}
    \end{enumerate}
  \item Last thing
\end{enumerate*}

\end{document}

enumerate*\item아무것도 하지 않도록 재정의되었습니다 (be \relax). 따라서 선택적 인수가 있는 경우 이를 완전히 무시합니다. 즉, \item[<stuff>]기본값은 [<stuff>]. 필요한 경우 선택적 인수를 사용하도록 조정할 수 있습니다.

로 삽입한 수직 조정을 조정할 수도 있습니다 enumerate*.

답변2

모든 답변에 감사드립니다. 그러나 결국에는 모든 다른 방법을 작동시키려는 노력에서 머리를 모두 뽑은 후 Python에 포함된 특정 명령에 따라 줄을 주석 처리(및 주석 처리 제거)하는 스크립트를 직접 작성하기로 결정했습니다. 파일.

예를 들어 원본 파일이 다음과 같다면

\begin{document}
    \begin{enumerate}
        \item 
        This is a test.
        \item 
        This is another test.
        \item 
        This is yet another test.
    \end{enumerate}
\end{document} 

그리고 이러한 열거 항목을 모두 끄는 옵션을 원합니다. 주석 처리할 각 줄의 끝에 다음과 같이 작은 명령을 추가하기만 하면 됩니다.

\begin{document}
    \begin{enumerate} %@
        \item %@
        This is a test.
        \item %@
        This is another test.
        \item %@
        This is yet another test.
    \end{enumerate} %@
\end{document}

그리고 내 스크립트가 마술을 부리게 하여 파일을 다음과 같은 모습으로 바꿉니다.

\begin{document}
%@    \begin{enumerate}
%@      \item
        This is a test.
%@      \item
        This is another test.
%@      \item
        This is yet another test.
%@  \end{enumerate}
\end{document}

이것은 번거로워 보일 수도 있지만, 무슨 일이 일어나고 있는지 모든 것을 알고 있기 때문에 나에게는 이것이 최고의 솔루션입니다.

Python으로 작성된 프로그램을 사용하거나 살펴보고 싶은 사람은 다음 사이트에서 찾을 수 있습니다.CTAN.

답변3

acc를 사용하여 새 환경을 정의합니다 enumitem. 귀하의 필요에 따라:

\documentclass{article}
\usepackage{enumitem}

\newlist{myenum}{enumerate*}{3}
\setlist[myenum]{leftmargin=!,label=\arabic*.}

\begin{document}
\begin{myenum}
\item This is a test.
\item This is another test.
\item This is yet another test.
  \begin{myenum}[label=]
  \item Second level This is a test.
  \item This is another test.
  \item This is yet another test.
    \begin{myenum}[label=\roman*.]
    \item Third level This is a test.
    \item This is another test.
    \item This is yet another test.
    \end{myenum}
  \end{myenum}
\end{myenum}
\end{document}

답변4

이것은 귀하의 사용 사례에서 거의 작동합니다. 더 멋진 열거 환경이나 옵션에서는 강력하지 않을 수 있습니다. 원하는 대로 중첩을 처리하지 않습니다.

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

\documentclass{article}

\usepackage{etoolbox}
\newtoggle{killenumerate}

\toggletrue{killenumerate}

\newenvironment{myenumerate}
{\iftoggle{killenumerate}
  {\renewcommand{\item}{}}
  {\begin{enumerate}}
}
{\iftoggle{killenumerate}
  {}
  {\end{enumerate}}
}

\begin{document}

Enumeration switched off selectively in preamble.

\begin{myenumerate}
\item One item in myenumerate environment
\item Two
\item Three
\end{myenumerate}

\begin{enumerate}
\item One item in ordinary enumerate
\item Two
\item Three
\end{enumerate}

Enumeration switched on for the rest of the document.

\togglefalse{killenumerate}

\begin{myenumerate}
\item One item in myenumerate environment
\item 
\item Two
\item Three
\end{myenumerate}

\end{document}

관련 정보