是否有一个包允许从外部.txt 文件导入所选的行?
我知道铸造有一个可以通过这种方式定制的命令:(\inputminted[firstline=3,lastline=5]{c}{hello.c}
参见关联),但我正在寻找更中性的东西,而不是特定于任何编程语言的东西。这是因为我正在编写一个命令.txt我正在学习一个包含思科路由器/交换机配置命令的长列表的文件,我想只导入几行必需的命令来展示示例。显然,minted 不包含任何“cisco”语言。我知道\verb
环境verbatim
,但我认为断开长行可能会有问题。
答案1
您无需在包环境中为语法高亮指定适当的计算机语言minted
,而是可以使用选项text
。这将按原样排版输入,不带语法高亮,但具有minted
包的全部功能。
就你的情况而言,你可能希望使用\inputminted
andfirstline
选项lastline
。此外,只需将其text
作为第一个强制参数即可:
\documentclass{article}
\usepackage{minted}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.C}
int main() {
printf("hello, world");
return 0;
}
\end{filecontents*}
\begin{document}
\inputminted[firstline=2,lastline=3]{text}{\jobname.C}
\end{document}
答案2
根据文件的内容,这可能就是您想要的。
\begin{filecontents*}{\jobname.txt}
This is line 1 with \special{characters}
This is line 2 with \special{characters}
This is line 3 with \special{characters}
This is line 4 with \special{characters}
This is line 5 with \special{characters}
This is line 6 with \special{characters}
This is line 7 with \special{characters}
This is line 8 with \special{characters}
This is line 9 with \special{characters}
\end{filecontents*}
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\verblines}{mmm}
{
\begin{flushleft}\ttfamily
\wobbly_verblines:nnn { #1 } { #2 } { #3 }
\end{flushleft}
}
\int_new:N \l__wobbly_verblines_index_int
\ior_new:N \g__wobbly_verblines_file_stream
\cs_new_protected:Nn \wobbly_verblines:nnn
{
\ior_open:Nn \g__wobbly_verblines_file_stream { #1 }
\int_zero:N \l__wobbly_verblines_index_int
\ior_str_map_inline:Nn \g__wobbly_verblines_file_stream
{
\int_incr:N \l__wobbly_verblines_index_int
\int_compare:nT { #2 <= \l__wobbly_verblines_index_int <= #3 } { ##1 \\ }
}
\ior_close:N \g__wobbly_verblines_file_stream
}
\ExplSyntaxOff
\begin{document}
Here are lines 1 to 3
\verblines{\jobname.txt}{1}{3}
Here are lines 2 to 5
\verblines{\jobname.txt}{2}{5}
Here are all the lines
\verblines{\jobname.txt}{0}{100}
\end{document}
环境filecontents*
仅用于使示例独立。最后一个例子显示了如果参数超出文件中的行数会发生什么。