
Следующий код сломан из-за использования \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}