将多个外部文件导入森林

将多个外部文件导入森林

我想导入森林中的许多输入文本文件。下面是一个例子来说明我的想法:

输入1.txt

This line is a long sentence that may need more space to fit inside a single line.
This is a new line that I expect to go right after the above line.
And here is a line with some special characters: @#_'"$[]{}()/\

输入2.txt

here goes input2.txt content

这是我的起始代码

\documentclass{standalone}
\usepackage{forest}
\usepackage{verbatim}
\newbox\verbbox

\begin{document}

\setbox\verbbox=\vbox{\verbatiminput{input1.txt}}


\begin{forest}
 [root,draw
[\box\verbbox,draw]
     [here goes input2.txt content,draw]]
\end{forest}
\end{document}

输出

在此处输入图片描述

上面的代码有两个问题:

  1. 仅需一个输入即可工作
  2. 输入文本不适合输入框

这是我期望的输出:

在此处输入图片描述

答案1

我建议编写一个样式来输入文件。verbatimbox这里似乎使用 package 更可取,因为它可以根据文件内容的宽度调整框的宽度。

\documentclass{standalone}
\usepackage{forest}
\usepackage{verbatimbox}

\forestset{
  verbatim input/.style={
    content={\verbfilebox{#1}\theverbbox},
    fill=yellow,
  },
}

\begin{document}

\begin{forest}
  for tree=draw,
 [root
   [,verbatim input=input1.txt]
   [branch
     [,verbatim input=input2.txt]
     [,verbatim input=input3.txt]
   ]
 ]
\end{forest}

\end{document}

答案2

您可以在环境中使用更多框之前读取它们。每个框都有其自己的编号。如果您想与第一行对齐,可以\top使用。\vbox

\documentclass{standalone}
\usepackage{forest}
\usepackage{verbatim}
\def\infile#1#2{\setbox\numexpr1000+#1=\vtop{\verbatiminput{#2}}}
\def\putfile#1{\box\numexpr1000+#1\relax}

\begin{document}

\infile 1 {input.txt}
\infile 2 {input2.txt}

\begin{forest}
 [root,draw
[\putfile1,draw]
     [\putfile2,draw]]
\end{forest}
\end{document}

相关内容