我正在尝试记录一些有关边距的 LaTeX 宏。我认为记录的一个好方法是将 LaTeX 代码放在背面,将输出放在正面。所以我想出了这个 MWE:
\documentclass{article}
\usepackage{lipsum}
\usepackage{verbatim}
\newenvironment{documentationpage}%
{\endgraf\verbatim}%
{\endverbatim}
\begin{document}
%
\begin{documentationpage}
This is a sentence explaining the footnote macro.\footnote{This is a footnote.}
This is a sentence explaining the footnote macro.\footnote{This is a footnote, too.}
\end{documentationpage}
%
\end{document}
现在,我想This is a sentence...footnote, too.}
先使用框架环境进行排版,然后再不使用框架documentationpage
环境进行排版。
因此,输出应该类似于
\begin{documentationpage}
This is a sentence explaining the footnote macro.\footnote{This is a footnote.}
This is a sentence explaining the footnote macro.\footnote{This is a footnote, too.}
\end{documentationpage}
\newpage
This is a sentence explaining the footnote macro.\footnote{This is a footnote.}
This is a sentence explaining the footnote macro.\footnote{This is a footnote, too.}
\newpage
我可以用 (Lua-)LaTeX 实现这个吗?
答案1
有一个showexpl
包允许显示代码和结果。您可以重新定义其样式以添加\newpage
。
另一个包ydoc-expl
来自我的ydoc
包。但它仍处于 alpha 阶段。您可以重新定义\PrintExample
以更改代码示例的显示方式。对于您的应用程序,您可以使用以下代码。
该包将代码存储到外部文件中,可以使用例如将其作为代码包含\lstinputlisting
或使用排版\input
。
\documentclass{article}
\usepackage{ydoc-expl}
\lstdefinestyle{examplecode}{%
basicstyle=\ttfamily\small,
breaklines,
numbers=none,language=tex,
}
\makeatletter
\def\PrintExample{%
\lstinputlisting [style=examplecode]{\ydoc@exafile}
\newpage
\noindent
\input{\ydoc@exafile}%
\newpage
}
\makeatother
\begin{document}
\begin{examplecode}
This is a sentence explaining the footnote macro.\footnote{This is a footnote.}
This is a sentence explaining the footnote macro.\footnote{This is a footnote, too.}
\end{examplecode}
\end{document}
更新:
这里提取并修改了底层代码,以便您拥有所请求的环境名称:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{listings}
\makeatletter
\lst@RequireAspects{writefile}
\lstdefinestyle{documentationpage}{%
basicstyle=\ttfamily\scriptsize,
breaklines,
language=[latex]tex,
}
\lstnewenvironment{documentationpage}{%
\setbox\@tempboxa\hbox\bgroup% to avoid any spaces sneaking in
%\lstset{gobble=2}% settings for code extraction
\lst@BeginWriteFile{\jobname.dpg}%
}{%
\lst@EndWriteFile
\egroup
\endgraf\noindent
\lstinputlisting[style=documentationpage]{\jobname.dpg}%
\newpage
\input{\jobname.dpg}%
\newpage
}
\makeatother
\begin{document}
\begin{documentationpage}
This is a sentence explaining the footnote macro.\footnote{This is a footnote.}
This is a sentence explaining the footnote macro.\footnote{This is a footnote, too.}
\end{documentationpage}
\end{document}