흥미로운 문제에 직면했습니다. 내 생각에는 환경이 이름, 처음에 실행할 코드, 마지막에 실행할 코드로 정의됩니다.
그러나 나는 다음을 시도하고 있습니다.
\documentclass[]{article}
\usepackage{paracol}
\usepackage{lipsum}
\newenvironment{env1}{%
\begin{paracol}{2}%
}{}
\newenvironment{env2}{%
\switchcolumn
}{%
\end{paracol}%
}
\begin{document}
\begin{env1}
\lipsum[1]
\end{env1}
\begin{env2}
\lipsum[1]
\end{env2}
\end{document}
하지만 이것은 작동하지 않습니다.
환경 시작 및 종료 코드가 정의에 기록된 위치에서 실행된다고 생각했기 때문에 그것은 나에게 매우 이상하게 들립니다. 이 작은 예는 환경 정의가 다른 작업을 수행함을 보여줍니다.
내 코드를 작동시키는 방법은 무엇입니까?
다른 질문: 의 끝 코드에 \switchcolumn을 넣으면 코드가 작동하지 않습니다 env1
. 무슨 일이야 ?
편집하다
목적을 이해하려면 다음을 살펴보세요.이 질문이틀 전에 물어봤습니다. 패키지 문제도 마찬가지였습니다 markdown
. 이러한 환경은 요리책 구현의 기초입니다.
paracol
환경 의 시작 부분에서 환경을 시작 ingredient
하고 환경의 끝에서 끝내고 싶습니다 preparation
(결국 환경의 끝에서도 recipe
괜찮을 것입니다.
답변1
이 분할을 통해 많은 것을 얻을 수 있다고 생각하지 않습니다. 어쨌든, 다른 방법으로 할 수 있습니다.
왜 당신의 방식이 작동하지 않습니까? 환경은 그룹을 형성하므로 을(를) 닫으면 에서 env1
수행한 설정의 대부분이 \begin{paracol}{2}
잊혀집니다.
\documentclass[]{article}
\usepackage[latin]{babel}
\usepackage{paracol,environ}
\usepackage{lipsum}
\NewEnviron{env1}{\global\let\envone\BODY}
\newenvironment{env2}{%
\paracol{2}\envone\switchcolumn
}{\endparacol}
\begin{document}
\begin{env1}
\lipsum[1]
\end{env1}
\begin{env2}
\lipsum[1]
\end{env2}
\end{document}
나는 latin
좁은 열에 좋은 하이픈을 넣기 위해 사용했습니다.
첫 번째 환경은 두 번째 환경에서 사용되는 텍스트를 저장합니다.
답변2
Environ 패키지를 사용하면 (다소간) 이를 수행할 수 있습니다. 텍스트를 전역 매크로, 저장 상자 또는 토큰 목록으로 저장할 수 있습니다(\BODY는 토큰 목록이라고 생각합니다).
\documentclass[]{article}
\usepackage{paracol}
\usepackage{environ}
\usepackage{lipsum}
\newsavebox{\mycolumn}
\NewEnviron{env1}{%
\global\setbox\mycolumn=\vbox{\hsize=\dimexpr 0.5\textwidth-0.5\columnsep\relax
\BODY}%
}
\NewEnviron{env2}{%
\begin{paracol}{2}%
\unvbox\mycolumn
\switchcolumn
\BODY
\end{paracol}%
}
\begin{document}
\sloppy% for lipsum in particular
\begin{env1}
\lipsum[1]
\end{env1}
\begin{env2}
\lipsum[1]
\end{env2}
\end{document}