.tex
我的问题是从一个文件中生成另一个文件.tex
。问题的根源是从科学论文中提取一些信息,并创建另一个包含作者等数据的文件.tex
。.pdf
我MWE
现在使用\string
,但如果我想在输出中创建多行.tex
,则很容易出错。有什么简单的解决方案吗?
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T2A,T1]{fontenc}
%\usepackage{filecontents}
\makeatletter
\def\macroPass#1{%
\if\relax\detokenize{#1}\relax
\else
\def\macroPrint{#1}
\fi
}
\makeatother
\begin{document}
\newwrite\regformfile
\newcommand\writeregformfile{%
\immediate\openout\regformfile=data.tex
\immediate\write\regformfile{
\string\documentclass{article}^^J
\string\begin{document}^^J
\string\begin{center} \string\bfseries^^J
\string\begin{tabular}{|l|l|}^^J
\string\hline^^J
Field& \unexpanded\expandafter{\macroPrint} \string\\ \string\hline^^J
\string\end{tabular}^^J
\string\end{center}^^J
\string\end{document}
}
}
\macroPass{To data.tex}
\writeregformfile
\end{document}
MWE 与folecontents
,这是不正确的工作。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T2A,T1]{fontenc}
%\usepackage{filecontents}
\makeatletter
\def\macroPass#1{%
\if\relax\detokenize{#1}\relax
\else
\def\macroPrint{#1}
\fi
}
\makeatother
\begin{filecontents*}{data.tex}
\documentclass{article}
\begin{document}
\begin{center}\bfseries
\begin{tabular}{|l|l|}
\hline
Field& \macroPrint \\ \hline
\end{tabular}
\end{center}
\end{document}
\end{filecontents*}
\begin{document}
\macroPass{To data.tex}
\end{document}
答案1
您可以作弊并使用不同的转义字符来定义宏。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T2A,T1]{fontenc}
\newcommand\macroPass[1]{%
\if\relax\detokenize{#1}\relax
\else
\def\macroPrint{#1}%
\fi
}
\newwrite\regformfile
\begingroup
\catcode`?=0 \catcode`\\=12
?endlinechar=`^^J
?gdef?writeregformfile{%
?immediate?openout?regformfile=data.tex%
?immediate?write?regformfile{%
\documentclass{article}
\begin{document}
\begin{center} \bfseries
\begin{tabular}{|l|l|}
\hline
Field & ?unexpanded?expandafter{?macroPrint} \\ \hline
\end{tabular}
\end{center}
\end{document}
}%
}%
?endgroup%
\begin{document}
\macroPass{To data.tex}
\writeregformfile
\end{document}
输出文件如下。
\documentclass{article}
\begin{document}
\begin{center} \bfseries
\begin{tabular}{|l|l|}
\hline
Field & To data.tex \\ \hline
\end{tabular}
\end{center}
\end{document}