替換變數中的重音字符

替換變數中的重音字符

我想替換字串變數中的重音字符,但我不是在 Latex 中編寫自己的巨集的專家。所以,我在這裡找到了一個巨集:https://openclassrooms.com/forum/sujet/latex-supprimer-des-accents-96612替換後可以顯示沒有重音的句子。但是,當我嘗試使用變數作為函數的參數,而不是直接編寫句子時,它不再起作用。我在這裡發布一個最小的例子:

\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}

結果在這裡:

在此輸入影像描述

嘗試 1 工作正常,但我不明白為什麼嘗試 2 和嘗試 3 不起作用,它們給了我帶有重音字符的單字。我的目標是「嘗試 3」有效。我需要它來在更完整的文檔中使用它。如果有人能幫我解決這個問題,我將非常感激。

先感謝您。

答案1

您設定的擴充模式\expandarg僅擴充\temp一次。什麼時候\temp有一個字串就可以了。當它是巨集時,不會發生進一步的擴展,只是傳回巨集。

在您的範例程式碼中,您只需替換\def\temp{#2}by\edef\temp{#2}即可擴展該術語。

相關內容