論文の章立てを抜き出して箇条書きにするスクリプト
Tex で論文を作成している方のみ対象になります.
卒論,修論の報告を tex でするとき もしくは,作業中の論文の進捗具合を他の人に報告するのに,
論文の章立てにどのくらいですよとか,報告用の文章に張り込む作業が発生します.
まぁ本文毎回みればいいじゃないかってのはなしで.
以下が章立ての例
\section{はじめに} \subsection{背景} \subsubsection{うんたらかんたら}
張り込む時は箇条書きにして書くので以下になる...
\begin{enumerate} \item[1] はじめに \item[1.1] 背景 \item[1.1.1] うんたらかんたら \end{enumerate}
1. はじめに 1.1 背景 1.1.1 うんたらかんたら
なんかいろいろ変えたり番号つけたりとかめんどくさい!
一回章立てしたらもう変えねーよ!って方はすばらしいと思うのですが,
ちょっとかわったりって事があってめんどくさいので,
Rubyでスクリプト作成してみた.
syou.rb ver2
#!/usr/bin/ruby -Ks require 'kconv' filename = "syou.tex" $foo = File.open(filename,'w') $s = 0 $ss = 0 $sss = 0 def texinput(filename) File.open(filename,"r"){|file| while line=file.gets if /\%/ =~ line elsif /\\section\{(.+)\}/ =~ line $s += 1 $ss = 0 $sss = 0 $foo.print "\\item[" , $s , "] " , $1.toutf8, "\n" elsif /\\subsection\{(.+)\}/ =~ line $ss += 1 $sss = 0 $foo.print "\\item[" , $s , "." , $ss , "] " , $1.toutf8 , "\n" elsif /\\subsubsection\{(.+)\}/ =~ line $sss += 1 $foo.print "\\item[" , $s , "." , $ss , "." , $sss , ".] " , $1.toutf8 , "\n" elsif /\\input\{(.+)\}/ =~ line texinput($1) end end } end $foo.puts "\\documentclass[a4j,fleq,twocolmun]{jarticle}" $foo.puts "\\begin{document}" $foo.puts "\\begin{enumerate}" texinput(ARGV[0]) $foo.puts "\\end{enumerate}" $foo.puts "\\end{document}" $foo.close()
一応 \input で他のソース読んでても大丈夫.
追記
syou.texが文字化けする場合があるのでソースを変更した.
Ruby/ てっとり早く文字コードを変換したい
ここを参考に