Apologies in advance. I deleted many features for my mwe, but I find LaTeX so hard to debug that the act of cutting out creates more errors and triggers more questions so I'm keeping it as it is at the moment.
I am creating course notes containing text for students and text for teacher about the pedagogy. I want to create two versions of the text, the teacher version and the student version. The teacher version could also have answers for exercises.
I created mwepreamble.tex to be included by all files of this pattern, with all the repetitive definitions, and mwe.tex with specific example text.
In the preamble, I define a boolean variable teach, and attempt to define a new environment teacher, so that if I surround a block of text by
\begin{teachr} ... \end{teachr}
the text should disappear whenever the teach variable is false. I try and get the error:
l.15 \begin{teachr}
! LaTeX Error: \begin{document} ended by \end{teachr}.
mwepreamble.tex:
\documentclass[12pt]{book}
\usepackage[titles]{tocloft}
\setcounter{tocdepth}{0}
\setlength{\cftbeforechapskip}{0pt}
\parindent0pt \parskip10pt % make block paragraphs
\raggedright % do not right justify
\usepackage{mathptmx} % times roman, including math (where possible)
\usepackage{mathpazo} % palatino, including math (where possible)
\usepackage{helvet} % helvetica
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage[usenames,dvipsnames]{color}
\usepackage{amsthm}
\usepackage{graphicx}
\usepackage{etoolbox}
%\usepackage{comment}
%\usepackage{etoc}
\usepackage{listings}
\usepackage{grffile}
\usepackage{listing}
\usepackage{changepage}
\usepackage{multirow}
\usepackage{outlines}
\usepackage{enumitem}
\usepackage{fancyhdr}
%\usepackage{subfigure}
\usepackage{textcomp}
\usepackage{collcell}
\usepackage{tabu}
\usepackage{titlesec}
\usepackage{environ}
\definecolor{DeepPink}{rgb}{0.8,0,0.4}
\definecolor{DarkRed}{rgb}{0.5,0,0}
\definecolor{DarkBlue}{rgb}{0,0,0.5}
\titleformat{\chapter}
{\normalfont\LARGE\bfseries\color{DarkBlue}}{\thechapter.}{1em}{}
\usepackage[top=0.5in, bottom=1in, left=1in, right=1in]{geometry}
\usepackage[colorlinks,citecolor=DeepPink4,linkcolor=DarkRed, urlcolor=DarkBlue]{hyperref}
\usepackage{cleveref}
\cfoot{\sffamily\textcopyright... }
\rfoot{\thepage}
\graphicspath{ {img/} }
\pagestyle{fancy}
\definecolor{lgray}{rgb}{0.9,0.9,0.9}
\definecolor{white}{rgb}{1,1,1}
\definecolor{dkgreen}{rgb}{0,.5,0.1}
\definecolor{wrongcolor}{rgb}{.9,.5,.4}
\definecolor{purple}{rgb}{0.6,0,0.6}
\lstset{
backgroundcolor=\color{lgray},
% basicstyle=\footnotesize \ttfamily \color{black} \bfseries,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
commentstyle=\color{dkgreen},
deletekeywords={...},
escapeinside={\%*}{*)},
frame=single,
keywordstyle=\textbf,
morekeywords={BRIEFDescriptorConfig,string,TiXmlNode,DetectorDescriptorConfigContainer,istringstream,cerr,exit},
identifierstyle=\color{black},
stringstyle=\color{blue},
language=Java,
numbers=right,
numbersep=5pt,
numberstyle=\tiny\color{black},
rulecolor=\color{black},
showspaces=false,
showstringspaces=false,
showtabs=false,
stepnumber=1,
tabsize=5,
title=\lstname,
}
\newcommand{\java}{\begin{lstlisting}[language=Java]}
\newcommand{\cpp}{\begin{lstlisting}[language=C++]}
\newcommand{\qqq}{\section{Questions}\begin{enumerate}}
\newcommand{\exer}{\end{enumerate}\section{Exercises}\begin{enumerate}}
\def\endexer#1{\end{enumerate}%
\ifstrempty{#1}{%
}{%
\href{\quizzes/#1}{Take the quiz}}
}%
\makeatletter
\newcounter{lab}% also defines \thelab
% roughly equivalent to \chapter
\newcommand{\lab}[1]{% #1 is lab heading
\refstepcounter{lab}%
\if@openright\cleardoublepage\else\clearpage\fi%
\addtocontents{toc}{\string\contentsline {chapter}%
{\hbox to .65in{Lab}\protect\numberline{\thelab}#1}{\thepage}}%
\global\@topnum\z@% page number to bottom?
\noindent%
\@lab{#1}% fixed first character separation
}
% roughly equivalent to \@chapter
\def\@lab#1{% #1 is lab heading
\if@twocolumn%
\@topnewpage[{\huge\bfseries Lab \thelab: #1\par}]%
\else{\huge\bfseries Lab \thelab: #1\par}%
\@afterheading% no idea
\fi}
\newcommand{\ohm}{$\Omega$ }
\newcommand{\kohm}{k$\Omega$ }
\newtoggle{teach}
\toggletrue{teach}
\NewEnviron{teachr}
{\iftoggle{teach}{\BODY}{}}
\setenumerate[1]{label=\arabic*.}
\setenumerate[2]{label=\Alph*.}
\setenumerate[3]{label=\roman*.}
\setenumerate[4]{label=\alph*.}
mwe.tex
\input{mwepreamble.tex}
\begin{document} % End of preamble, start of text.
\chapter{Introduction}
\begin{teachr}
These notes are just for teachers and should only display when printing the teacher version.
\end{teachr}
Introductory Text
\begin{itemize}
\item Things you will need to do.
\item Yet another bullet point.
\item Safety third!
\item Tired of working? Hold a meeting! Meetings, the alternative to work.
\end{itemize}
\chapter{Safety Warning}
Before starting your kindergarten course in radioactive materials, here are a few things you should know
\begin{itemize}
\item Don't chew on the radium pacifiers.
\begin{itemize}
\item We know they are sugar coated and really tasty, but control yourself!
\end{itemize}
\item Don't put too many plutonium blocks into a big pile -- it's dangerous!
\end{itemize}
\begin{teachr}
\chapter{Teachers Notes on Engineering Competitions}
Text. text. text....
\end{teachr}
\end{document}