LaTeX3 - babel-french 使用時にセミコロンで分割する

LaTeX3 - babel-french 使用時にセミコロンで分割する

次のコードは の使用によって壊れています\usepackage[french]{babel}。これは簡単に修正できますか?

\documentclass[12pt]{article}

\usepackage[french]{babel} % The character ; becomes active...

\ExplSyntaxOn

\NewDocumentEnvironment{env-KO}{ b }{%
  \pmbc_splitsemicolon:n { #1 } %
}{}

\cs_new:Npn \pmbc_splitsemicolon:n #1 {
  \seq_set_split_keep_spaces:Nnn \l_tmpa_seq { ; } { #1 }
  \seq_use:Nn \l_tmpa_seq { \par\smallskip }
}

\ExplSyntaxOff


\begin{document}

\begin{env-KO}
    a ;
    b ; c ; d
\end{env-KO}

\end{document}

次のパッチを試しましたが、成功しませんでした。

\documentclass[12pt]{article}

\usepackage[french]{babel} % The character ; becomes active...

\ExplSyntaxOn

\NewDocumentEnvironment{env-KO}{ b }{%
  \shorthandoff{;}
  \pmbc_splitsemicolon:n { #1 } %
}{}

\cs_new:Npn \pmbc_splitsemicolon:n #1 {
  \seq_set_split_keep_spaces:Nnn \l_tmpa_seq { ; } { #1 }
  \seq_use:Nn \l_tmpa_seq { \par\smallskip }
}

\ExplSyntaxOff


\begin{document}

\begin{env-KO}
    a ;
    b ; c ; d
\end{env-KO}

\end{document}

答え1

ドキュメントの先頭にあるセミコロンを再スキャンします。

\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}

\ExplSyntaxOn

\NewDocumentEnvironment{env-KO}{ b }
 {
   \pmbc_splitsemicolon:n { #1 }
 }{}

\tl_new:N \g_pmbc_splitsemicolon_semicolon_tl
\tl_gset:Nn \g_pmbc_splitsemicolon_semicolon_tl { ; }
\cs_generate_variant:Nn \seq_set_split_keep_spaces:Nnn { NV }

\AtBeginDocument
 {
  \tl_gset_rescan:NnV \g_pmbc_splitsemicolon_semicolon_tl {} \g_pmbc_splitsemicolon_semicolon_tl
 }

\cs_new:Npn \pmbc_splitsemicolon:n #1
 {
  \seq_set_split_keep_spaces:NVn \l_tmpa_seq \g_pmbc_splitsemicolon_semicolon_tl { #1 }
  \seq_use:Nn \l_tmpa_seq { \par\smallskip }
 }

\ExplSyntaxOff


\begin{document}

\begin{env-KO}
    a ;
    b ; c ; d
\end{env-KO}

\end{document}

ここに画像の説明を入力してください

関連情報