Substituição de caracteres acentuados em uma variável

Substituição de caracteres acentuados em uma variável

Gostaria de substituir caracteres acentuados em uma variável de string, mas não sou especialista em programar minhas próprias macros em Latex. Então, encontrei uma macro aqui:https://openclassrooms.com/forum/sujet/latex-supprimer-des-accents-96612que pode exibir uma frase sem acento após substituí-los. Porém, quando tento usar uma variável como argumento da função, ao invés de escrever diretamente a frase, não funciona mais. Posto aqui um exemplo mínimo:

\documentclass[11pt]{article}

\usepackage{luatextra}
\usepackage[french]{babel}
\usepackage{xstring}

\makeatletter
\def\delaccent[#1]#2{% #1=liste des substitutions
\begingroup
\expandarg\exploregroups\def\temp{#2}%
\delaccent@i#1\delaccent@i\delaccent@i
\expandafter\temp\endgroup}
\def\delaccent@i#1#2{\ifx\delaccent@i#1\else\StrSubstitute\temp{\noexpand#1}{\noexpand#2}[\temp]\expandafter\delaccent@i\fi}
\makeatother

\newcommand{\name}{Michaël}
\newcommand{\nameSA}{\delaccent[{à}{a}{é}{e}{è}{e}{ë}{e}{ê}{e}{ï}{i}{ô}{o}{ù}{u}]{\name}}

\begin{document}

Name : \name

Try 1 : \delaccent[{à}{a}{é}{e}{è}{e}{ë}{e}{ê}{e}{ï}{i}{ô}{o}{ù}{u}]{Michaël}

Try 2 : \delaccent[{à}{a}{é}{e}{è}{e}{ë}{e}{ê}{e}{ï}{i}{ô}{o}{ù}{u}]{\name}

Try 3 : \nameSA

\end{document}

O resultado está aqui:

insira a descrição da imagem aqui

Try 1 funciona bem, mas não entendo porque Try 2 e Try 3 não funcionam, eles me dão a palavra com caracteres acentuados. Meu objetivo é que o Try 3 funcione. Preciso dele para utilizá-lo em um documento mais completo. Eu apreciaria muito se alguém pudesse me ajudar a resolver este problema.

Agradeço antecipadamente.

Responder1

Você define o modo de expansão para \expandargo qual expande apenas \tempuma vez. Quando \tempé uma string, tudo bem. Quando é uma macro, nenhuma expansão adicional ocorre, a macro apenas é retornada.

No seu código de exemplo, você poderia simplesmente substituir \def\temp{#2}by \edef\temp{#2}para obter a expansão deste termo.

informação relacionada