xstring StrSubstitute 和表

xstring StrSubstitute 和表

我在与表格结合时遇到了问题xstring \StrSubstitute。我想用命令替换变量\\中的换行符(),以在段落表格单元格中生成第二行。因此,我得到了以下代码,它对于第一个输出(如果我放在左列)\newline运行良好,但对于右列中的第二个输出,我得到了\addr

Undefined control sequence error

我不知道如何解决这个问题,以及为什么第一个输出有效而第二个输出无效。

谢谢你的帮助。

编辑:添加了 MWE

\documentclass{article}

\usepackage[a4paper,top=1.27cm,left=1cm,right=1cm,bottom=2cm]{geometry}
\usepackage{ifpdf}
\usepackage{graphicx}
\usepackage[utf8x]{inputenc}
\usepackage{longtable}
\usepackage{xstring}

\def\address{Test123\\Test234}

\providecommand{\test}[1][0pt]{%
Test1 & Test\newline Test2\tabularnewline
\ifx\@empty\address\else
\saveexpandmode\expandarg
\StrSubstitute{\address}{\empty\\}{\empty\newline}[\addr]%
\restoreexpandmode
\addr & Address \tabularnewline
Address    & \addr   \tabularnewline
\fi
}   
\begin{document}

\begin{tabular}{p{2cm}|p{2cm}}
\test
\end{tabular}


\end{document}

答案1

问题在于表格单元格内的赋值仅限于该单元格。因此,解决这个问题的一种方法是定义一个宏来生成所需的结果:

在此处输入图片描述

代码:

\documentclass{article}

\usepackage[a4paper,top=1.27cm,left=1cm,right=1cm,bottom=2cm]{geometry}
\usepackage{ifpdf}
\usepackage{graphicx}
\usepackage[utf8x]{inputenc}
\usepackage{longtable}
\usepackage{xstring}

\def\address{Test123\\Test234}

\newcommand{\addrGlobal}{%
    \ifx\@empty\address\else
    \saveexpandmode\expandarg
    \StrSubstitute{\address}{\empty\\}{\empty\newline}[\addr]%
    \restoreexpandmode\addr%
}%

\providecommand{\test}[1][0pt]{%
Test1 & Test\newline Test2\tabularnewline
\addrGlobal & Address \tabularnewline
Address    &  \addrGlobal   \tabularnewline
\fi
}   
\begin{document}

\begin{tabular}{p{2cm}|p{2cm}}
\test
\end{tabular}


\end{document}

相关内容