使用 polyglossia 恢复 noindentafter 功能

使用 polyglossia 恢复 noindentafter 功能

polyglossia加载noindentafter停止工作时:

\documentclass{article}
    \usepackage{fontspec}
        \setmainfont{Latin Modern Roman}
    \usepackage{lipsum}
    \usepackage{polyglossia}
        \setmainlanguage{french}
        %   \PolyglossiaSetup{french}{indentfirst=false}
    \usepackage{noindentafter}
        \NoIndentAfterEnv{myitemize}

    \newenvironment{myitemize}{\begin{itemize}}{\end{itemize}}

\begin{document}
   \begin{myitemize}
       \item test
   \end{myitemize}

   \lipsum
\end{document}

在此处输入图片描述

我测试过的所有语言都存在这种情况。某一部分的第一段没有缩进?egreg 建议添加indentfirst=false(在代码中注释),但不幸的是它不适用于自定义环境。

有没有一种(可能简单的)方法可以noindentafter在使用时恢复功能polyglossia

答案1

这两个包都搞乱了\@afterindentfalse。幸运的是,polyglossia存储了旧版本\@@fterindentfalse,因此我们可以重新定义中央命令\NoIndentAfterThis以使用存储的版本。

示例输出

\documentclass{article}

\usepackage{fontspec}
\setmainfont{Latin Modern Roman}
\usepackage{lipsum}

\usepackage{polyglossia}
\setmainlanguage{french}

\usepackage{noindentafter}
\makeatletter
\renewcommand*{\NoIndentAfterThis}{\par\@@fterindentfalse\@afterheading}
\makeatother

\NoIndentAfterEnv{myitemize}
\newenvironment{myitemize}{\begin{itemize}}{\end{itemize}}

\begin{document}
Text. \NoIndentAfterThis Text.
\begin{myitemize}
\item test
\end{myitemize}

\lipsum
\end{document}

相关内容