私はあなたの質問に興味をそそられ、ちょっと夢中になりました。このソリューションは、クリック可能なインデックスと色で強調表示されたコードを含む素敵なPDFファイルを生成します。現在のディレクトリとサブディレクトリですべてのファイルを検索し、それぞれのPDFファイルにセクションを作成します(findコマンドをより具体的にする方法については、以下のメモを参照してください)。
次のものがインストールされている必要があります(インストール手順はDebianベースのシステム用ですが、ディストリビューションのリポジトリで利用できるはずです):
pdflatex
、color
そしてlistings
sudo apt-get install texlive-latex-extra latex-xcolor texlive-latex-recommended
インストールされていない場合、これにより基本的なLaTeXシステムもインストールされます。
これらをインストールしたら、このスクリプトを使用して、ソースコードでLaTeXドキュメントを作成します。秘Theは、LaTeXパッケージlistings
(の一部texlive-latex-recommended
)およびcolor
(インストール者)を使用することlatex-xcolor
です。これ\usepackage[..]{hyperref}
により、目次のリストがクリック可能なリンクになります。
#!/usr/bin/env bash
tex_file=$(mktemp) ## Random temp file name
cat<<EOF >$tex_file ## Print the tex file header
\documentclass{article}
\usepackage{listings}
\usepackage[usenames,dvipsnames]{color} %% Allow color names
\lstdefinestyle{customasm}{
belowcaptionskip=1\baselineskip,
xleftmargin=\parindent,
language=C++, %% Change this to whatever you write in
breaklines=true, %% Wrap long lines
basicstyle=\footnotesize\ttfamily,
commentstyle=\itshape\color{Gray},
stringstyle=\color{Black},
keywordstyle=\bfseries\color{OliveGreen},
identifierstyle=\color{blue},
xleftmargin=-8em,
}
\usepackage[colorlinks=true,linkcolor=blue]{hyperref}
\begin{document}
\tableofcontents
EOF
find . -type f ! -regex ".*/\..*" ! -name ".*" ! -name "*~" ! -name 'src2pdf'|
sed 's/^\..//' | ## Change ./foo/bar.src to foo/bar.src
while read i; do ## Loop through each file
name=${i//_/\\_} ## escape underscores
echo "\newpage" >> $tex_file ## start each section on a new page
echo "\section{$i}" >> $tex_file ## Create a section for each filename
## This command will include the file in the PDF
echo "\lstinputlisting[style=customasm]{$i}" >>$tex_file
done &&
echo "\end{document}" >> $tex_file &&
pdflatex $tex_file -output-directory . &&
pdflatex $tex_file -output-directory . ## This needs to be run twice
## for the TOC to be generated
ソースファイルを含むディレクトリでスクリプトを実行します
bash src2pdf
これall.pdf
により、現在のディレクトリに呼び出されるファイルが作成されます。私のシステムで見つけたいくつかのランダムなソースファイル(特に、のソースからの2つのファイルvlc-2.0.0
)でこれを試しました。これは、結果のPDFの最初の2ページのスクリーンショットです。
いくつかのコメント:
a2ps -P file *.src
が、ソースコードからポストスクリプトファイルを作成できます。ただし、PSファイルは後で変換して結合する必要があります。