Mint 代码内联读取文件

Mint 代码内联读取文件

有没有办法将mint一行代码内联,从文件中读取代码?

\mintinline只能排版直接传递给命令的代码,在两个分隔符之间(例如\mintinline{latex}{\LaTeX}),\inputminted并将代码排版在与段落分开的自己的框中。

我希望两者兼而有之,类似于(假设的)\inputmintinlineminted手册中没有提到任何此类内容。


我会使用它,因为我想创建一个命令,将其参数逐字逐句地读取并写入文件,将内容排版为,minted然后将内容解释为 LaTeX,扩展/执行其中的任何宏,排版结果。相关这个答案

我已经弄清楚了“外部”代码,但没有弄清楚内联代码,因为没有\inputmintinline命令。

答案1

不确定这有什么用处:

\begin{filecontents*}{\jobname-test.tex}
\LaTeX
\end{filecontents*}

\documentclass{article}
\usepackage{minted,catchfile}

\newcommand\inputmintinline[3][]{%
  \begingroup\everyeof{}%
  \CatchFileDef\temp{#3}{}%
  \scantokens\expandafter{%
    \expandafter\processinputmintinline\expandafter{\temp}{#1}{#2}%
  }\unskip
  \endgroup
}
\newcommand{\processinputmintinline}[3]{\mintinline[#2]{#3}{#1}}

\begin{document}

X\inputmintinline{latex}{\jobname-test.tex}X

X\mintinline{latex}{\LaTeX}X

\end{document}

在此处输入图片描述

expl3

\begin{filecontents*}{\jobname-test.tex}
\LaTeX
\end{filecontents*}

\documentclass{article}
\usepackage{minted,xparse,l3cctab}

\ExplSyntaxOn
\NewDocumentCommand{\inputmintinline}{O{}mm}
 {
  \group_begin:
  \cctab_begin:N \c_other_cctab
  \char_set_catcode_ignore:n { `\^^M } % ignore the endline
  \file_get:nnN { #3 } { } \l_tmpa_tl
  \cctab_end:
  \anakhand_mintintline:nnV { #1 } { #2 } \l_tmpa_tl
  \group_end:
}
\cs_new_protected:Nn \anakhand_mintintline:nnn
 {
  \mintinline[#1]{#2}{#3}
 }
\cs_generate_variant:Nn \anakhand_mintintline:nnn { nnV }
\ExplSyntaxOff

\begin{document}

X\inputmintinline{latex}{\jobname-test.tex}X

X\mintinline{latex}{\LaTeX}X

\end{document}

相关内容