我使用 进行了一些文件写入expl3
,但也需要Nx
版本,这与变音符号的使用相冲突。Nn
版本可以正确处理变音符号,但不会扩展将其写入文件的标记列表。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{csvsimple,xparse}
\ExplSyntaxOn
\iow_new:N \tobi_file_iow
\tl_const:Nn \c_tobi_something_tl { Something }
\AtBeginDocument {
\iow_open:Nn \tobi_file_iow { \jobname-file.csv }
}
\AtEndDocument {
\iow_close:N \tobi_file_iow
\par\bigskip
\csvautotabular { \jobname-file.csv }
}
\NewDocumentCommand { \writetofile } { m } {
% \iow_now:Nn \tobi_file_iow { \c_tobi_something_tl , #1 }
\iow_now:Nx \tobi_file_iow { \c_tobi_something_tl , #1 }
}
\ExplSyntaxOff
\begin{document}
Test \writetofile{Test}
Täst \writetofile{Täst}
Täst \writetofile{Südwand}
\end{document}
是否可以Nx
正确使用变音符号?
答案1
我假设您正在使用 pdfTeX,否则您不会遇到 Unicode 问题。
有几个选项,取决于您到底想做什么。
如果你不想让争论扩大根本,然后您可以使用\exp_not:n {#1}
来防止\write
弄乱活动的 UTF-8 令牌:
\NewDocumentCommand { \writetofile } { m }
{ \iow_now:Nx \tobi_file_iow { \c_tobi_something_tl , \exp_not:n {#1} } }
但是如果你想扩展#1
,如果其中有宏,那么你可以使用\text_expand:n
:
\NewDocumentCommand { \writetofile } { m }
{ \iow_now:Nx \tobi_file_iow { \c_tobi_something_tl , \text_expand:n {#1} } }
至于\c_tobi_something_tl
,如果您希望它完全展开,请像以前一样使用它。如果您希望它展开到其内容,请使用\exp_not:V
:
\NewDocumentCommand { \writetofile } { m }
{ \iow_now:Nx \tobi_file_iow { \exp_not:V \c_tobi_something_tl , \text_expand:n {#1} } }
或者如果你想要完全扩展而又不破坏 Unicode,那么\text_expand:n
再说一遍:
\NewDocumentCommand { \writetofile } { m }
{ \iow_now:Nx \tobi_file_iow { \text_expand:n { \c_tobi_something_tl } , \text_expand:n {#1} } }