- // The previous language that was in effect is either the language of
- // the previous paragraph, if there is one, or else the outer language
- // if there is no previous paragraph
+
+ // The previous language that was in effect is the language of the
+ // previous paragraph, unless the previous paragraph is inside an
+ // environment with nesting depth greater than (or equal to, but with
+ // a different layout) the current one. If there is no previous
+ // paragraph, the previous language is the outer language.
+ bool const use_prev_env_language = prev_env_language_ != 0
+ && priorpit->layout().isEnvironment()
+ && (priorpit->getDepth() > pit->getDepth()
+ || (priorpit->getDepth() == pit->getDepth()
+ && priorpit->layout() != pit->layout()));