- Questo topic ha 4 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 13 anni fa da .
-
Topic
-
Ho un file di testo di cui mi tornerebbe comodo potrer importare le singole righe come elementi di una \seq di LaTeX3 per poi poterle trattare con altri comandi. Mi si presentano due problemi:
– le righe di testo contengono comandi di LaTeX che non vengono poi espansi opportunamente;
– con pdflatex i caratteri accentati non risultano corretti (le codifiche di editor, file di testo, inputenc sono coerenti), mentre con xelatex funzionano.Se creo la \seq inserendo manualmente il testo non ci sono problemi, quindi evidentemente il problema deriva da come [tt]ior_str_map_inline:[/tt] legge e scrive il testo (dalla documentazione: considera tutto con catcode 12 eccetto gli spazi). Interessante che anche le righe on i “%” inserite da filecontents vengano stampate.
Se al posto di [tt]ior_str_map_inline:[/tt] uso [tt]ior_map_inline:[/tt] non ho problemi né con la codifica né con l’espansione dei comandi, ma non ho più gli spazi. Vorrei evitare di avere un file di testo pieno di “~”.
Si può fare qualcosa?Riporto un emc.
Fran
`\begin{filecontents}{prova.txt}
nàr: nèàòr re mo \emph{ciao}
Accà: È
Aàr: ggeèérr.
\end{filecontents}\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xparse}\ExplSyntaxOn
\tl_new:N \l_line_temp_tl
\seq_new:N \g_all_lines_seq
\ior_new:N \g_DataBase %
\ior_open:Nn \g_DataBase {prova.txt}
\ior_str_map_inline:Nn \g_DataBase %oppure
%\ior_map_inline:Nn \g_DataBase
{
\tl_set:No \l_line_temp_tl { #1 }
\seq_put_right:No \g_all_lines_seq { \l_line_temp_tl }
}
\ior_close:N \g_DataBase%\seq_show:N \g_all_lines_seq
\NewDocumentCommand{\stampa}{}
{
\seq_map_inline:Nn \g_all_lines_seq
{
##1\par\smallskip
}
}
% seq creata manualmente
\seq_set_split:Nnn \l_my_seq {|} {nàr:~ nèàòr~ re~ mo~ \emph{ciao} | Accà:~ È | Aàr:~ ggeèérr.}\NewDocumentCommand{\stampab}{}
{
\seq_map_inline:Nn \l_my_seq
{
##1\par\smallskip
}
}
\ExplSyntaxOff
\begin{document}
\stampaàèéìòù
\stampab
\end{document}`
- Devi essere connesso per rispondere a questo topic.