将所有铸造的代码片段导出到文件

将所有铸造的代码片段导出到文件

我想将我编写的讲座书的所有代码片段以有序树结构导出为<chapter>/<section>/<some name or number>.<ext>。代码采用各种语言(python、java、js、C 等),并在使用 创建的环境中使用 minted 格式化\newminted。有没有办法在 LaTeX 中做到这一点?谢谢

(更新)添加代码示例:

\documentclass{article}
\usepackage{needspace}
\setlength{\parindent}{0pt}
\usepackage{minted}

\newcommand{\lang}[1]{%
  \medskip%
  \Needspace{2\baselineskip}%
  \smash{\parbox{\linewidth}{\color{gray}\scriptsize%
    \rule[2pt]{\linewidth}{0.4pt}\\%
    \makebox[\linewidth]{\hfill\textsf{#1}}%
  }}%
  \vspace{-\partopsep}%
  \vspace{-\baselineskip}%
}

\newenvironment{code}[3]{\VerbatimEnvironment
  \lang{#2}%
  \begin{minted}[#3]{#1}%
}{%
  \end{minted}%
}

\begin{document}

Some text before the script.

\begin{code}{lisp}{$\lambda$ Lisp}{}
(if nil
  (list 1 2 "foo")
  (list 3 4 "bar"))
\end{code}

And a comment after it.

\end{document}

在此处输入图片描述

答案1

文件

\documentclass{article}

\usepackage{minted}
\makeatletter


\renewcommand{\minted@FVE@VerbatimOut}{%
  \immediate\closeout\FV@OutFile\endgroup\@esphack
  % copy not cp if using windows
  \ShellEscape{cp \minted@jobname .pyg minted-\thesection.x}%
   \setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}}%

\begin{document}

\section{aaa}
\begin{minted}{python}
  a=b
  a=2
\end{minted}

\section{bbb}
\begin{minted}{python}
  x=y
  x=3
\end{minted}
\end{document}

将在当前目录中留下两个文件minted-1.xminted-2.x,后面的部分-是文件写入时的节号。(没有进行检查,因此如果某个节有两个铸造的块,则较早的块将被覆盖)

代码仅添加了一行来复制临时生成的文件,然后将其传递给 pygmentize 并删除。

相关内容