ページ

title

告発\金沢地方検察庁\最高検察庁\法務省\石川県警察御中
弁護士と裁判官が共同で確定させた傷害・準強姦被告事件判決の再捜査要請に係る石川県警察珠洲警察署提出書面の情報公開

殺人未遂事件幇助の被告訴人: 木梨松嗣弁護士(金沢弁護士会)、岡田進弁護士(金沢弁護士会)、長谷川紘之弁護士(金沢弁護士会)、若杉幸平弁護士(金沢弁護士会)
名誉毀損罪の被告訴人: モトケンこと矢部善朗弁護士(京都弁護士会)、小倉秀夫弁護士(東京弁護士会)
市場急配センター株式会社 石川県金沢市駅西本町5丁目10番20所在
作成管理者: 石川県鳳珠郡能登町字宇出津 廣野秀樹
金沢地方検察庁御中

2020年5月11日月曜日

## pandocを利用し作成したTexファイルからluatexコマンドでPDFファイルを作成するスクリプト

## pandocを利用し作成したTexファイルからluatexコマンドでPDFファイルを作成するスクリプト

:CATEGORIES: Ubuntu,LaTeX,YouTube,スクリーンキャスト

 時刻は2020年5月11日10時29分です。今回ご紹介するスクリプトは5月5日に出来上がっていたものと思いますが,今朝,実行してみたところ不具合を見つけ,その修正などしていました。まだいくつか修正の必要はあるのですが,基本形は出来ていると思います。

 さきほどスクリーンキャストの動画ファイルを作成し,YouTubeにアップロードしました。実際のパソコン画面の操作で,何をやっているのかだいたいのところはお伝えできるのではと思います。まだ不具合が残っている箇所もありますが,一部で修正済みです。

2020年05月11日09時57分22秒の記録_pandocを利用し作成したTexファイルからluatexコマンドでPDFファイルを作成 - YouTube https://www.youtube.com/watch?v=JCUjIuZQpvI

 次がスクリプトのソースコードになります。何に取り組み時間を使ってきたのかという状況もご理解いただくため,ご紹介をしておきたいと思いました。雑な作りになっているところもあると思いますが,こけつまろびずの苦心の作になります。

```
#!/usr/bin/env ruby
#coding: utf-8
require 'date'

f = ARGV[0].dup
@name = f.sub(/\..+$/,'')
#`sed -E -i "s/^[ source :]/ - 〈引用元:〉/" "#{f}"`
`pandoc -sN -f markdown -V documentclass=ltjarticle --pdf-engine=lualatex -t latex #{f} -o ./tmp.tex`

content = `cat ./tmp.tex |sed -nE '/\\\\begin\\{document\\}/,$p' |sed -E 's/\\\\begin\\{document\\}//'`
#content.gsub!(/```(.+?)```/m) {">《引用の始まり》\n\n#{$1.gsub(/^/,'> ')}\n\n>《引用の終わり》"}
#content.sub!(/^(\\begin\{document\})$/){$1 + "\n\n\\tableofcontents \\newpage"}
content = content.gsub(/```(.+?)```/m) {"\\begin{quote}\n#{$1}\n\\end{quote}"}
content = content.gsub(/\\begin{verbatim}(.+?)\\end{verbatim}/m) \
{"\\begingroup\\fontsize{9pt}{10pt}\\selectfont\n\\begin{quote}\n\\begin{verbatim}\n#{$1}\n\\end{verbatim}\n\\end{quote}\\endgroup\n"}

title = @name
# File.open("tmp.txt", "w") do |f|
# f.puts(content)
# end

date = DateTime.now
@pdf_day = date.strftime("%Y.%m.%d")

#puts title
content_org = content
content = content.sub('\\begin\{document\}','')

begin
content = content.sub(/.*(title: ).+/){"\\hrulefill\n\n" + $1}.sub!(/(.*\n記事タイトル名の文字数:.+? 保存ファイル名の文字数:.+?)\n/){ $1 + "\n\n\\hrulefill\n\n"}
content = content.gsub('_', '\_')
content = content.gsub('\\\\','\\')
rescue
content = content_org
end

tex_header = <<"EOS"
\\begin{document}

\\tableofcontents \\newpage

\\title{#{@name}}
%\\author{\\leftline{{\\small{廣野秀樹}}}}
\\author{廣野秀樹}
\\date{#{@pdf_day}}
\\maketitle

EOS

tex_text = <<"EOS"
\\PassOptionsToPackage{unicode=true}{hyperref} % options for packages loaded elsewhere
\\PassOptionsToPackage{hyphens}{url}
%
\\documentclass[]{ltjarticle}
\\usepackage[top=30truemm,bottom=30truemm,left=25truemm,right=20truemm]{geometry}
\\usepackage{lmodern}
\\usepackage{amssymb,amsmath}
\\usepackage{ifxetex,ifluatex}
\\usepackage{fixltx2e} % provides \\textsubscript
\\ifnum 0\\ifxetex 1\\fi\\ifluatex 1\\fi=0 % if pdftex
\\usepackage[T1]{fontenc}
\\usepackage[utf8]{inputenc}
\\usepackage{textcomp} % provides euro and other symbols
\\else % if luatex or xelatex
\\usepackage{unicode-math}
\\defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
\\fi
% use upquote if available, for straight quotes in verbatim environments
\\IfFileExists{upquote.sty}{\\usepackage{upquote}}{}
% use microtype if available
\\IfFileExists{microtype.sty}{%
\\usepackage[]{microtype}
\\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\\IfFileExists{parskip.sty}{%
\\usepackage{parskip}
}{% else
\\setlength{\\parindent}{0pt}
\\setlength{\\parskip}{6pt plus 2pt minus 1pt}
}
\\usepackage[colorlinks,linkcolor=blue,urlcolor=blue]{hyperref}
\\hypersetup{
pdfborder={0 0 0},
breaklinks=true}
\\urlstyle{same}
\\setlength{\\emergencystretch}{3em} % prevent overfull lines
\\providecommand{\\tightlist}{%
\\setlength{\\itemsep}{0pt}\\setlength{\\parskip}{0pt}}
\\setcounter{secnumdepth}{5}
% Redefines (sub)paragraphs to behave more like sections
\\ifx\\paragraph\\undefined\\else
\\let\\oldparagraph\\paragraph
\\renewcommand{\\paragraph}[1]{\\oldparagraph{#1}\\mbox{}}
\\fi
\\ifx\\subparagraph\\undefined\\else
\\let\\oldsubparagraph\\subparagraph
\\renewcommand{\\subparagraph}[1]{\\oldsubparagraph{#1}\\mbox{}}
\\fi

% set default figure placement to htbp
\\makeatletter
\\def\\fps@figure{htbp}
\\makeatother


\\usepackage{fancyhdr}
\\pagestyle{fancy}
\\lhead{#{title}}



#{tex_header}
#{content.gsub('\n','\textbackslash')}

EOS

# #{content.gsub('_', '\_').gsub('\\\\','\\').sub('\\begin{document}','')}

#puts tex_text

File.open("./#{@name}_tmp.tex", "w") do |f|
f.puts(tex_text)
end

sleep 3

`mv ./#{@name}_tmp.tex ./#{@name}.tex`
`lualatex ./#{@name}.tex`
`lualatex ./#{@name}.tex`
`lualatex ./#{@name}.tex`
`evince ./#{@name}.pdf`
`rm ./#{@name}.out ./#{@name}.toc ./#{@name}.aux ./#{@name}.log ./tmp.tex`

```

 今朝,修正したのが「#{content.gsub('\n','\textbackslash')}」という部分の処理になります。ちょっと間違いに気がついたので後で修正しておきますが,バックスラッシュをTex用にエスケープする処理です。pandocで処理されていなかったみたいです。

 pandocから一気にPDFファイルを作成することは出来るのですが,Ubuntu18.04の時は使えていたオプションも使えなくなり,様式の変更が出来なくなっていました。今回はTexファイルを生成しているので,LaTeXとしてなんでもできるかと思います。

0 件のコメント:

コメントを投稿