TeX 文件输出另一个 TeX 文件

TeX 文件输出另一个 TeX 文件

.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}

相关内容