The tabularx documentation states
This mechanism of grabbing an environment body does have the disadvantage (shared with the AMS alignment environments) that you can not make extension environments by code such as
\newenvironment{foo}{\begin{tabularx}{XX}}{\end{tabularx}}
as the code is looking for a literal string \end{tabularx} to stop scanning. Since version 2.02, one may avoid this problem by using \tabularx and \endtabularx directly in the definition:
\newenvironment{foo}{\tabularx{XX}}{\endtabularx}
The scanner now looks for the end of the current environment (foo in this example.) There are some restrictions on this usage, the principal one being that \endtabularx must not be inside any { } pairs ao that the code before \endtabularx may be extracted and added to the table body (prior to version 2.09 \endtabularx had to be the first token of the ‘end code’ of the environment).
Thus, you can define your environment as
\newenvironment{note}[1]{%
\par\noindent
\tabularx{\textwidth}{c|X}%
\emph{#1} &%
}{%
\endtabularx%
}
I added \par\noindent to the definition. \par ends the previous paragraph and \noindent makes sure the entry is not indented by \parindent (this would lead to an overfull \hbox).
tabularxis very special. very special. Just don't put it in a new environment. – Johannes_B May 04 '19 at 06:55