将文件拆分成行,并将行拆分成部分

将文件拆分成行,并将行拆分成部分

我正在使用 LaTeX 制作一本歌本。项目还处于早期阶段,歌曲还没有全部选好,但我想在此期间修复它的内部工作原理。
由于(希望)会有很多人参与,并且会包含很多歌曲,所以我想分别保存所有歌曲并 \input 它们。
梦想是有一个文本文件,其中的歌曲如下所示

二手店-macLemore
两个世界,一个家庭-来自 Tarzan
Gagnam Style-Psy

并且我可以循环遍历列表并说(抱歉混淆了语言):

for(line l : index.txt) {
    String[] k = l.split('-');
    \includesong{k[0]}{k[1]}
}

有什么好方法可以做到这一点吗?

编辑:我找到了一个名为解析线效果相当不错。尤其是与正则表达式结合使用时(为什么互联网上关于 \def\foo#1, #2 的信息这么少?)。

答案1

\documentclass{article}
\newread\sngs
\def\splitdash#1-#2\relax{%
\def\thissong{#1}%
\def\thissource{#2}%
}
\begin{document}
\def\zpar{\par}
\openin\sngs=songs.txt
\loop
\read\sngs to \tmp
\ifx\tmp\zpar\else
\expandafter\splitdash\tmp\relax
\input{\thissong}
\fi
\ifeof\sngs
\else
\repeat


\end{document}

歌曲.txt:

Thrift shop-macLemore
Two worlds, one family-from Tarzan
Gagnam Style-Psy

这将尝试输入三个标题(您可能希望规范化文件名,删除空格或其他内容)

! LaTeX Error: File `Thrift shop.tex' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: tex)

Enter file name: 

! LaTeX Error: File `Two worlds, one family.tex' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: tex)

Enter file name: 

! LaTeX Error: File `Gagnam Style.tex' not found.

相关内容