如何\emph
?\csname\command\endcsname
我尝试使用\csgdef
,它有效,但不适用于\csname
,我需要使用\csxdef
。
\documentclass[a4paper,12pt,hidelinks]{article}
\usepackage[utf8]{inputenc}
\usepackage[brazil]{babel}
\usepackage[T1]{fontenc}
\usepackage{filecontents}
\usepackage{csvsimple}
\usepackage{xstring}
\usepackage{alphalph}
\usepackage{etoolbox}
\usepackage{tikz}
\newcommand \garotab {garota}
\newcommand \nveics {2}
\foreach \x [count=\xi from 2] in {b,...,\alphalph{\nveics}}{
% \csxdef{teste\x}{\emph{\csname garota\x\endcsname}}
\csxdef{rato\x}{\em ah garota}
\csgdef{gato\x}{\emph{ah garota}}
}
\begin{document}
{\testeb}\\
{\gatob}\\
{\ratob}\\
\end{document}
答案1
您需要避免扩展,因此在其前面\emph
使用。\noexpand
\documentclass{article}
\usepackage{alphalph}
\usepackage{etoolbox}
\usepackage{tikz}
\newcommand \garotab {garota}
\newcommand \nveics {2}
\foreach \x [count=\xi from 2] in {b,...,\alphalph{\nveics}}{
\csxdef{teste\x}{\noexpand\emph{\expandonce{\csname garota\x\endcsname}}}
\csxdef{rato\x}{\noexpand\em ah garota}
\csgdef{gato\x}{\emph{ah garota}}
}
\begin{document}
{\testeb}
{\gatob}
{\ratob}
\end{document}
请注意,通过这种方式,您执行的操作与
\def\testeb{\emph{\garotab}}
如果你想完全展开\garotab
(我不确定你是否这样做),请将这一行改为
\csxdef{teste\x}{\noexpand\emph{\csname garota\x\endcsname}}