
이 질문으로 인해 새로운 패키지가 탄생했습니다.
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
캡처해야 합니다 . 이를 위해 우리는 정의를 프리앰블에 저장하고 매 시작 시 사용하도록 다시 설정합니다.\item
enumerate
enuemrate
이를 위해 우리는 정의를 프리앰블에 저장하고 모든 사용etoolbox
의 \AtBeginEnvironment
. 다른 목록도 중첩하려면 복원해야 합니다.\item
비슷한 방식으로 복원해야 합니다.
enumerate*
아래에서는 컴파일 중에 꺼지는 기능을 정의했지만 여전히 중첩된 enumerate
s를 지원합니다.
\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}