변수에서 강조된 문자 대체

변수에서 강조된 문자 대체

문자열 변수에서 강조된 문자를 바꾸고 싶지만 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}

결과는 다음과 같습니다.

여기에 이미지 설명을 입력하세요

Try 1은 잘 작동하지만 Try 2와 Try 3은 왜 작동하지 않는지 이해가 되지 않습니다. 강조된 문자가 포함된 단어를 제공합니다. 내 목표는 Try 3이 작동하는 것입니다. 좀 더 완전한 문서에서 사용하려면 필요합니다. 누군가가 이 문제를 해결하는 데 도움을 줄 수 있다면 정말 감사하겠습니다.

미리 감사드립니다.

답변1

\expandarg한 번만 확장되는 확장 모드를 설정합니다 \temp. \temp괜찮은 문자열은 언제 입니까? 매크로인 경우 더 이상 확장이 발생하지 않고 매크로가 반환됩니다.

예제 코드에서는 \def\temp{#2}by 를 대체하여 \edef\temp{#2}이 용어를 확장할 수 있습니다.

관련 정보