我有一些代码,主要基于这个问题的解决方案:
我问的其他问题
代码如下所示,到目前为止,除了以下内容外,其他都有效\\
:
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage{environ}
\usepackage{etoolbox}
%%Environments
%Liederbuchumgebung
\newenvironment{Liederbuch}[1]
{\def\liederbuchtmp{#1}\csgdef{LH#1}##1##2{\csuse{lied;#1;##1;##2}}}
{}
%Liedumgebung
\NewEnviron{Lied}[2]{\csxdef{lied;\liederbuchtmp;#1;#2}{\BODY}}
%Forward to Environments
\newcommand*\LHsong[3][n]{\csuse{lied;#2;#1;#3}}
%use of Liederbuchenv.
\begin{Liederbuch}{Test}
%use of Liederbuchenv.
\begin{Lied}{t}{1}
%content begins here.
Lied Nummer 1, Format t
%Problem occurs here. If you delete the \\ it seems to throw a exhaustive expansion error (which I don't understand)
Hänschen klein, %\\
ging allein %\linebreak
in die weite Welt hinein. %\newline
Stock und Hut,
steht im gut.
Ist gar wohlgemut.
\end{Lied}
\begin{Lied}{nt}{2}
Lied Nummer 2, Format nt
\end{Lied}
\begin{Lied}{n}{336}
Lied Nummer 336, Format n
\end{Lied}
\end{Liederbuch}
\begin{document}
\LHsong[t]{Test}{1}
\end{document}
我怎样去\\
上班?
答案1
大多数 latex 命令都不安全\xdef
(这就是为什么 latex 具有\protect
机制和\protected@edef
),但在这里你只是想要我认为并且根本\let
不需要扩展。\BODY
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage{environ}
\usepackage{etoolbox}
%%Environments
%Liederbuchumgebung
\newenvironment{Liederbuch}[1]
{\def\liederbuchtmp{#1}\csgdef{LH#1}##1##2{\csuse{lied;#1;##1;##2}}}
{}
%Liedumgebung
\NewEnviron{Lied}[2]{\global\cslet{lied;\liederbuchtmp;#1;#2}\BODY}
%Forward to Environments
\newcommand*\LHsong[3][n]{\csuse{lied;#2;#1;#3}}
%use of Liederbuchenv.
\begin{Liederbuch}{Test}
%use of Liederbuchenv.
\begin{Lied}{t}{1}
%content begins here.
Lied Nummer 1, Format t
%Problem occurs here. If you delete the \\ it seems to throw a exhaustive expansion error (which I don't understand)
Hänschen klein, \\
ging allein %\linebreak
in die weite Welt hinein. %\newline
Stock und Hut,
steht im gut.
Ist gar wohlgemut.
\end{Lied}
\begin{Lied}{nt}{2}
Lied Nummer 2, Format nt
\end{Lied}
\begin{Lied}{n}{336}
Lied Nummer 336, Format n
\end{Lied}
\end{Liederbuch}
\begin{document}
\LHsong[t]{Test}{1}
\end{document}