hiki2latex 0.9.12 → 0.9.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +1 -3
- data/{README.en.md → README.md} +6 -4
- data/Rakefile +56 -28
- data/exe/#hiki2latex# +5 -0
- data/hiki2latex.gemspec +3 -0
- data/hiki2latex.wiki/AbstSample.pdf +0 -0
- data/hiki2latex.wiki/Math.png +0 -0
- data/hiki2latex.wiki/Report_head.png +0 -0
- data/hiki2latex.wiki/handout_sample.md +73 -0
- data/{docs/README.ja.md → hiki2latex.wiki/hiki2latex.md} +14 -16
- data/hiki2latex.wiki/hiki2latex_gemizing.md +221 -0
- data/hiki2latex.wiki/hiki2latex_init.md +97 -0
- data/hiki2latex.wiki/hiki2latex_listings.md +113 -0
- data/hiki2latex.wiki/hiki2latex_manual.md +31 -0
- data/hiki2latex.wiki/hiki2latex_math.md +147 -0
- data/hiki2latex.wiki/hiki2latex_table.md +103 -0
- data/hiki2latex.wiki/lpso_abst.pdf +0 -0
- data/hiki2latex.wiki/readme_en.md +60 -0
- data/{README.ja.md → hiki2latex.wiki/readme_ja.md} +46 -26
- data/hiki2latex.wiki/table.png +0 -0
- data/hikis/AbstSample.pdf +0 -0
- data/hikis/Math.png +0 -0
- data/hikis/Report_head.png +0 -0
- data/{docs/readme.ja.hiki → hikis/hiki2latex.hiki} +4 -6
- data/hikis/hiki2latex_gemizing.hiki +222 -0
- data/hikis/hiki2latex_init.hiki +95 -0
- data/hikis/hiki2latex_listings.hiki +113 -0
- data/hikis/hiki2latex_manual.hiki +32 -0
- data/hikis/hiki2latex_math.hiki +145 -0
- data/hikis/hiki2latex_table.hiki +102 -0
- data/hikis/lpso_abst.pdf +0 -0
- data/{docs/readme.hiki → hikis/readme_en.hiki} +2 -0
- data/hikis/readme_ja.hiki +133 -0
- data/hikis/table.png +0 -0
- data/latexes/AbstSample.pdf +0 -0
- data/latexes/Math.png +0 -0
- data/latexes/Report_head.png +0 -0
- data/latexes/head.tex +4 -0
- data/latexes/hiki2latex.aux +60 -0
- data/latexes/hiki2latex.log +307 -0
- data/latexes/hiki2latex.pdf +0 -0
- data/latexes/hiki2latex.synctex.gz +0 -0
- data/latexes/hiki2latex.tex +213 -0
- data/latexes/hiki2latex.toc +47 -0
- data/latexes/hiki2latex_gemizing.tex +212 -0
- data/latexes/hiki2latex_init.tex +103 -0
- data/latexes/hiki2latex_listings.tex +106 -0
- data/latexes/hiki2latex_manual.tex +38 -0
- data/latexes/hiki2latex_math.tex +151 -0
- data/latexes/hiki2latex_table.tex +108 -0
- data/latexes/lpso_abst.pdf +0 -0
- data/latexes/post.tex +17 -0
- data/latexes/table.png +0 -0
- data/lib/#hiki2latex.rb# +145 -0
- data/lib/hiki2latex/hiki2latex.rb +2 -1
- data/lib/hiki2latex/version.rb +1 -1
- data/lib/hiki2latex.rb +2 -2
- metadata +84 -13
- data/#Rakefile# +0 -42
- data/#hiki2latex.gemspec# +0 -42
- data/{docs/README.en.md → hiki2latex.wiki/readme.md} +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7f61b3eeb86e7a27f989b900398a479dc450adc
|
4
|
+
data.tar.gz: 3a53b98b515bdcb9065ad68b9f5b71dd2477df60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c9c63ed2c36a0c6e85129529cc884973c88244ebe4b02a395bd54e127f7171747fe35830abd228cdc555d8d690e9730405424032912a27207f1432ae2e2cf07f
|
7
|
+
data.tar.gz: 8c16c4ae32dd6dd5a3e3209424c82c887f0aa40c5eca3a31052df9c6d40f702010e20cb5fef84eb175249d5048aa8c1edda3e6e7c66d71b1bb1bf1478497476b
|
data/.yardopts
CHANGED
data/{README.en.md → README.md}
RENAMED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Hiki2latex
|
2
2
|
convert hikidoc text to latex format.
|
3
3
|
|
4
|
+
\
|
5
|
+
|
4
6
|
## Installation
|
5
7
|
Add this line to your application's Gemfile:
|
6
8
|
```ruby
|
@@ -29,6 +31,10 @@ or as a command line tool:
|
|
29
31
|
<dt>Usage</dt><dd> hiki2latex [options] FILE</dd>
|
30
32
|
</dl>
|
31
33
|
|
34
|
+
```
|
35
|
+
> hiki2latex --pre PRICM_preamble.tex --post biblio.tex -p test.hiki > test.tex
|
36
|
+
> hiki2latex --listings --post post.tex -p ./test.hiki > test.tex
|
37
|
+
```
|
32
38
|
|
33
39
|
| option | operation|
|
34
40
|
|:----|:----|
|
@@ -41,10 +47,6 @@ or as a command line tool:
|
|
41
47
|
| --post FILE | put post file.|
|
42
48
|
| --listings | use listings.sty for preformat with style.|
|
43
49
|
|
44
|
-
```
|
45
|
-
> hiki2latex --pre PRICM_preamble.tex --post biblio.tex -p test.hiki > test.tex
|
46
|
-
> hiki2latex --listings --post post.tex -p ./test.hiki > test.tex
|
47
|
-
```
|
48
50
|
|
49
51
|
## Development
|
50
52
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. Run `bundle exec hiki2latex` to use the gem in this directory, ignoring other installed copies of this gem.
|
data/Rakefile
CHANGED
@@ -1,42 +1,70 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
-
require "rspec/core/rake_task"
|
3
|
-
require "rake/testtask"
|
4
2
|
require 'yard'
|
5
|
-
require
|
3
|
+
require "rake/testtask"
|
4
|
+
require 'fileutils'
|
5
|
+
p base_path = File.expand_path('..', __FILE__)
|
6
|
+
p basename = File.basename(base_path)
|
6
7
|
|
7
|
-
#task :default => :test
|
8
8
|
task :default do
|
9
9
|
system 'rake -T'
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
12
|
desc "make documents by yard"
|
14
|
-
task :yard do
|
15
|
-
system "hiki2md docs/readme.hiki > docs/README.en.md"
|
16
|
-
system "hiki2md docs/readme.ja.hiki > docs/README.ja.md"
|
13
|
+
task :yard => [:hiki2md] do
|
17
14
|
YARD::Rake::YardocTask.new
|
18
15
|
end
|
19
16
|
|
20
|
-
|
17
|
+
desc "transfer hikis/*.hiki to wiki"
|
18
|
+
task :hiki2md do
|
19
|
+
files = Dir.entries('hikis')
|
20
|
+
files.each{|file|
|
21
|
+
name=file.split('.')
|
22
|
+
case name[1]
|
23
|
+
when 'hiki'
|
24
|
+
p command="hiki2md hikis/#{name[0]}.hiki > #{basename}.wiki/#{name[0]}.md"
|
25
|
+
system command
|
26
|
+
when 'gif','png','pdf'
|
27
|
+
FileUtils.cp("hikis/#{file}","#{basename}.wiki/#{file}",:verbose=>true)
|
28
|
+
FileUtils.cp("hikis/#{file}","doc/#{file}",:verbose=>true)
|
29
|
+
end
|
30
|
+
}
|
31
|
+
readme_en="#{basename}.wiki/README_en.md"
|
32
|
+
readme_ja="#{basename}.wiki/README_ja.md"
|
33
|
+
if File.exists?(readme_en)
|
34
|
+
FileUtils.cp(readme_en,"./README.md",:verbose=>true)
|
35
|
+
elsif File.exists?(readme_ja)
|
36
|
+
FileUtils.cp(readme_ja,"./README.md",:verbose=>true)
|
37
|
+
FileUtils.cp(readme_ja,"#{basename}.wiki/Home.md",:verbose=>true)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
desc "Make related report."
|
42
|
+
task :make_texes do
|
43
|
+
p files = Dir.entries('hikis')
|
44
|
+
files.each{|file|
|
45
|
+
next if file.include?('Readme')
|
46
|
+
name=file.split('.')
|
47
|
+
case name[1]
|
48
|
+
when 'hiki'
|
49
|
+
p command="hiki2latex -l 3 --listings -b hikis/#{name[0]}.hiki > latexes/#{name[0]}.tex"
|
50
|
+
system command
|
51
|
+
when 'gif','png','pdf'
|
52
|
+
FileUtils.cp("hikis/#{file}","latexes/#{file}",:verbose=>true)
|
53
|
+
end
|
54
|
+
}
|
55
|
+
source = File.join('hikis',basename+'.hiki')
|
56
|
+
target = File.join('latexes',basename+'.tex')
|
57
|
+
p command= "hiki2latex --listings --head latexes/head.tex --post latexes/post.tex -p #{source} > #{target}"
|
58
|
+
system command
|
21
59
|
|
22
|
-
|
23
|
-
task :update =>[:setenv] do
|
24
|
-
system 'emacs ./lib/hiki2latex/version.rb'
|
25
|
-
system 'git add -A'
|
26
|
-
system 'git commit'
|
27
|
-
system 'git push -u origin master'
|
28
|
-
system 'bundle exec rake release'
|
60
|
+
exit
|
29
61
|
end
|
30
62
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
p command='setenv HTTPS_PROXY http://proxy.ksc.kwansei.ac.jp:8080'
|
40
|
-
system command
|
41
|
-
# end
|
42
|
-
end
|
63
|
+
def kill_head_line(file_name)
|
64
|
+
cont = File.readlines(file_name)
|
65
|
+
unless cont[0]=~/\tableofcontents/ then
|
66
|
+
file = File.open(file_name,'w')
|
67
|
+
file.puts cont[1..-1]
|
68
|
+
file.close
|
69
|
+
end
|
70
|
+
end
|
data/exe/#hiki2latex#
ADDED
data/hiki2latex.gemspec
CHANGED
@@ -38,5 +38,8 @@ EOF
|
|
38
38
|
spec.add_development_dependency "test-unit"
|
39
39
|
spec.add_development_dependency "systemu"
|
40
40
|
spec.add_development_dependency "hiki2md"
|
41
|
+
spec.add_development_dependency "mathjax-yard"
|
42
|
+
spec.add_development_dependency "hiki2latex"
|
43
|
+
|
41
44
|
spec.add_runtime_dependency "hikidoc","~>0.1.0"
|
42
45
|
end
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# title:hiki2yardによる数値計算資料の作成システム
|
2
|
+
# author:情報科学科 西谷研究室 1234 西谷滋人
|
3
|
+
|
4
|
+
# 目的
|
5
|
+
hikiフォーマット文書をlatexフォーマットに変換するhiki2latex[1]をもちいて中間発表のabstract資料を作成する手順を紹介する.
|
6
|
+
|
7
|
+
# インストール
|
8
|
+
最初に,作業を自動化するhiki2yard[2]をrubygemsからinstallする.terminal上で,
|
9
|
+
```
|
10
|
+
gem install hiki2yaml
|
11
|
+
```
|
12
|
+
によって環境を構築するCUIがinstallされる.
|
13
|
+
```
|
14
|
+
hiki2yard --version
|
15
|
+
```
|
16
|
+
によってversionが表示されれば,正常にinstallがなされていることが確認できる.
|
17
|
+
|
18
|
+
# 環境構築
|
19
|
+
terminal上で
|
20
|
+
```
|
21
|
+
hiki2yard --init
|
22
|
+
```
|
23
|
+
によって,必要となるファイルが自動的に配置される.指示に従って,hogehoge.gemspecを
|
24
|
+
手動で修正する必要がある.さらに,
|
25
|
+
```
|
26
|
+
bundle update
|
27
|
+
```
|
28
|
+
によって,必要なgem filesがinstallされる.
|
29
|
+
|
30
|
+
# directory構成と各ファイルの意味
|
31
|
+
次にdirectory構成を示す.これはbundle gem -bによって生成される標準gem構築環境に修正を加えた構成となる.
|
32
|
+
```
|
33
|
+
bob% tree .
|
34
|
+
.
|
35
|
+
├── CODE_OF_CONDUCT.md
|
36
|
+
├── Gemfile
|
37
|
+
├── Gemfile.lock
|
38
|
+
├── LICENSE.txt
|
39
|
+
├── README.md
|
40
|
+
├── Rakefile
|
41
|
+
├── bin
|
42
|
+
├── doc
|
43
|
+
├── exe
|
44
|
+
├── hiki2yard.gemspec
|
45
|
+
├── hiki2yard.wiki
|
46
|
+
├── hikis
|
47
|
+
│ ├── README_en.hiki
|
48
|
+
│ ├── handout_sample.hiki
|
49
|
+
...
|
50
|
+
├── latexes
|
51
|
+
│ ├── handout_pre.tex
|
52
|
+
├── lib
|
53
|
+
├── pkg
|
54
|
+
└── spec
|
55
|
+
```
|
56
|
+
hikisにtargetとなるfileをhiki構文で作る.Rakefileに必要なtaskが登録されている.latexesには現在のところ,中間発表のhandoutを生成するpre-formatのtexが置かれている.
|
57
|
+
```
|
58
|
+
rake latex
|
59
|
+
```
|
60
|
+
によって
|
61
|
+
```
|
62
|
+
hiki2latex --pre latexes/handout_pre.tex hikis/handout_sample.hiki > latexes/handout_sample.tex
|
63
|
+
```
|
64
|
+
が起動され,latexes上にtargetのtex format文書が生成される.この後,自動的に起動されるmacのapplicationであるTeXShop上でcommand-tを押下することで,latexからpdfへ変換を行い,中間発表のabstractを作成する.
|
65
|
+
|
66
|
+
# 個別の準備
|
67
|
+
- 各人は自分でhikis/hogehoge.hikiファイルを生成する
|
68
|
+
- Rakefileの:latexタスクにあるtarget変数を変更する
|
69
|
+
後は,マニュアルに従ってpdf文書を作成できるはずである.質問がある場合は早めにね.
|
70
|
+
|
71
|
+
# 参考資料
|
72
|
+
1. [hiki2latex](https://rubygems.org/gems/hiki2latex), 2016/08/11アクセス.
|
73
|
+
1. [sakibts/hiki2yard](https://github.com/sakibts/hiki2yard), 2016/08/11アクセス.
|
@@ -2,9 +2,9 @@
|
|
2
2
|
hiki formatで書かれた文章を,latex formatに変換する
|
3
3
|
# 【documents】
|
4
4
|
- 
|
5
|
-
|
6
5
|
# 【使用法】
|
7
|
-
|
6
|
+
|
7
|
+
```tcsh
|
8
8
|
Usage: hiki2latex [options] FILE
|
9
9
|
-v, --version show program Version.
|
10
10
|
-l, --level VALUE set Level for output section.
|
@@ -24,10 +24,10 @@ Usage: hiki2latex [options] FILE
|
|
24
24
|
|
25
25
|
|ソース(hiki表示)|pdf(latex変換後)|
|
26
26
|
|:----|:----|
|
27
|
-
|[
|
28
|
-
|[
|
29
|
-
|[
|
30
|
-
|[
|
27
|
+
|[Shunkuntype](https://github.com/daddygongon/shunkuntype/wiki/Shunkuntype_report)|[Shunkuntypeのレポート](https://github.com/daddygongon/shunkuntype/wiki/shunkun_report.pdf)|
|
28
|
+
|[LPSO15研究会の例](LPSO15_fall_meeting_abst)|{{attach_anchor(LPSO_abst.pdf)}}|
|
29
|
+
|[中間発表hand out例](AbstSample)|{{attach_anchor(AbstSample.pdf)}}|
|
30
|
+
|[使っているformat集](DocumentFormatter_format_examples)|
|
31
31
|
|
32
32
|
|
33
33
|
# 【仕様】
|
@@ -66,23 +66,21 @@ end
|
|
66
66
|
```
|
67
67
|
本文(Shunkuntype_report.tex)と付録(targets.texs)がある.付録は'-l 2 -b'によってsubsectionからのtitle levelにしてbare modeで作っている.post.texにpostで付け加えるtex部を指定して,appendixをつけている.
|
68
68
|
|
69
|
-
# 【code documents】
|
70
|
-
[rdoc](http://nishitani0.kwansei.ac.jp/~bob/nishitani0/rdocs/hiki2latex/index.html)に置いといたけど,ruby gemsやgithubに置けば不要となる.
|
71
69
|
# 【変更履歴,内容】
|
72
70
|
変更履歴,内容を表に示す.15/8月期で基本開発.16/2月期にgem化.
|
73
71
|
## caption:変更履歴,内容
|
74
72
|
|
75
73
|
|memo |date|hiki|
|
76
74
|
|:----|:----|:----|
|
77
|
-
|hikidoc.rbからhiki2latex.rb|15/8/4
|
75
|
+
|hikidoc.rbからhiki2latex.rb|15/8/4||
|
78
76
|
|hiki2latex.rbひな形作成|15/8/5|
|
79
77
|
|@fをStringIOからStringへ|15/8/5|
|
80
|
-
|graph+caption|15/8/6
|
81
|
-
|math|15/8/7| [
|
82
|
-
|table| 15/8/8| [
|
83
|
-
|under_score| 15/8/11 | [
|
84
|
-
|gem化| 16/2/13 | [
|
85
|
-
|listings| 16/2/16 | [
|
78
|
+
|graph+caption|15/8/6||
|
79
|
+
|math|15/8/7| |
|
80
|
+
|table| 15/8/8| |
|
81
|
+
|under_score| 15/8/11 | |
|
82
|
+
|gem化| 16/2/13 | |
|
83
|
+
|listings| 16/2/16 | |
|
86
84
|
|
87
85
|
|
88
86
|
# 【開発メモ】
|
@@ -92,7 +90,7 @@ end
|
|
92
90
|
## 【 保留項目】
|
93
91
|
1. includegraphicsの自動提供
|
94
92
|
1. hikiに置かれているgraphは劣化版なんでそれをいじるのはあまり筋がよろしくない.
|
95
|
-
1. epsならできるかも.
|
93
|
+
1. epsならできるかも.hikiのattach_viewでサイズをどういじっているか...
|
96
94
|
1. underbar(_)がlatexでは全て引っかかる.escapeする?-> 対応済み 
|
97
95
|
1. snake表記はrubyではfile名や変数名に頻繁に使われるので対処が必要かも.
|
98
96
|
|
@@ -0,0 +1,221 @@
|
|
1
|
+
|
2
|
+
# 【概要】
|
3
|
+
hikiフォーマットの記述をlatexフォーマットに変換する
|
4
|
+
# 【使用法】
|
5
|
+
gem化して配布可能とした.したがって,installがちゃんとできていれば,
|
6
|
+
:command lineから:
|
7
|
+
```tcsh
|
8
|
+
bob% hiki2latex Shunkuntype_manual > tmp.tex
|
9
|
+
```
|
10
|
+
:libraryとして:
|
11
|
+
```ruby
|
12
|
+
require 'hiki2latex'
|
13
|
+
|
14
|
+
puts HikiDoc.to_latex(File.read(ARGV[0]))
|
15
|
+
```
|
16
|
+
```tcsh
|
17
|
+
bob% ruby trans.rb ./Shunkuntype_manual > tmp.tex
|
18
|
+
```
|
19
|
+
などとして利用できる.
|
20
|
+
|
21
|
+
# 【help】
|
22
|
+
|
23
|
+
```tcsh
|
24
|
+
bob% hiki2latex
|
25
|
+
Usage: hiki2latex [options]
|
26
|
+
-v, --version show program Version.
|
27
|
+
-l, --level VALUE set Level for output section.
|
28
|
+
-p, --plain FILE make Plain document.
|
29
|
+
-b, --bare FILE make Bare document.
|
30
|
+
--head FILE put headers of maketitle file.
|
31
|
+
--pre FILE put preamble file.
|
32
|
+
--post FILE put post file.
|
33
|
+
```
|
34
|
+
|
35
|
+
# 【詳細使用例(-p)】
|
36
|
+
以下のようなSampleDoc
|
37
|
+
```hiki
|
38
|
+
bob% cat SampleDoc
|
39
|
+
!title
|
40
|
+
contents
|
41
|
+
*list1
|
42
|
+
*list2
|
43
|
+
!!title2
|
44
|
+
```
|
45
|
+
を
|
46
|
+
```tex
|
47
|
+
bob% hiki2latex -p SampleDoc
|
48
|
+
\documentclass[12pt,a4paper]{jsarticle}
|
49
|
+
\usepackage[dvipdfmx]{graphicx}
|
50
|
+
\begin{document}
|
51
|
+
\section{title}
|
52
|
+
contents
|
53
|
+
\begin{itemize}
|
54
|
+
\item list1
|
55
|
+
\item list2
|
56
|
+
\end{itemize}
|
57
|
+
\subsection{title2}
|
58
|
+
\end{document}
|
59
|
+
```
|
60
|
+
となる.
|
61
|
+
|
62
|
+
# 【詳細使用例(-b)】
|
63
|
+
上記
|
64
|
+
```tex
|
65
|
+
\begin{document}
|
66
|
+
...
|
67
|
+
\end{document}
|
68
|
+
```
|
69
|
+
の中身だけを生成.いくつものtex filesをincludeしている場合の個別ファイル作成に便利.
|
70
|
+
|
71
|
+
この際,'-l 2'として付録のsectionとかを調整する.
|
72
|
+
|
73
|
+
# 【詳細使用例( --head, --pre, --post】
|
74
|
+
formatを標準と違うものにするために,pre,head,postがある.詳しくはsampleを見よ.
|
75
|
+
していしていく順番はないはずだけど,-p SampleDocだけは順番があるのかな.
|
76
|
+
あと,erbみたいにして使ったほうがいいかも.
|
77
|
+
```tcsh
|
78
|
+
bob% hiki2latex --pre preamble.tex --head head.tex --post post.tex -p SampleDoc
|
79
|
+
```
|
80
|
+
```tex
|
81
|
+
%preamble.tex
|
82
|
+
\documentclass[12pt,a4paper]{jsarticle}
|
83
|
+
\usepackage[dvipdfmx]{graphicx}
|
84
|
+
\pagestyle{empty}
|
85
|
+
```
|
86
|
+
```tex
|
87
|
+
\begin{document}
|
88
|
+
```
|
89
|
+
```tex
|
90
|
+
%head.tex
|
91
|
+
\author{関西学院大学・理工学部・西谷滋人}
|
92
|
+
\title{touch typing習得環境shunkuntype}
|
93
|
+
\date{\today}
|
94
|
+
\maketitle
|
95
|
+
```
|
96
|
+
```tex
|
97
|
+
\section{title}
|
98
|
+
contents
|
99
|
+
\begin{itemize}
|
100
|
+
\item list1
|
101
|
+
\item list2
|
102
|
+
\end{itemize}
|
103
|
+
\subsection{title2}
|
104
|
+
```
|
105
|
+
```tex
|
106
|
+
%post.tex
|
107
|
+
\pagebreak
|
108
|
+
\appendix
|
109
|
+
\section{マニュアル}
|
110
|
+
\input{shunkuntype_manual}
|
111
|
+
\pagebreak
|
112
|
+
\section{gem化メモ}
|
113
|
+
\input{shunkuntype_gemizing}
|
114
|
+
\pagebreak
|
115
|
+
\section{初期版のコード解説}
|
116
|
+
\input{shunkuntype_coding}
|
117
|
+
```
|
118
|
+
```tex
|
119
|
+
\end{document}
|
120
|
+
```
|
121
|
+
# 【lib/hiki2latex.rb】
|
122
|
+
```ruby
|
123
|
+
require 'optparse'
|
124
|
+
require "hiki2latex/version"
|
125
|
+
#require "hiki2latex/hikidoc"
|
126
|
+
require "hiki2latex/hiki2latex"
|
127
|
+
|
128
|
+
module Hiki2latex
|
129
|
+
class Command
|
130
|
+
|
131
|
+
def self.run(argv=[])
|
132
|
+
new(argv).execute
|
133
|
+
end
|
134
|
+
|
135
|
+
def initialize(argv=[])
|
136
|
+
@argv = argv
|
137
|
+
@pre=@head=@post=nil
|
138
|
+
end
|
139
|
+
|
140
|
+
def execute
|
141
|
+
@argv << '--help' if @argv.size==0
|
142
|
+
command_parser = OptionParser.new do |opt|
|
143
|
+
opt.on('-v', '--version','show program Version.') { |v|
|
144
|
+
opt.version = Hiki2latex::VERSION
|
145
|
+
puts opt.ver
|
146
|
+
}
|
147
|
+
opt.on('-l VALUE','--level','set Level for output section.'){|level| @level=level.to_i}
|
148
|
+
opt.on('-p FILE', '--plain','make Plain document.') { |file| plain_doc(file) }
|
149
|
+
opt.on('-b FILE', '--bare','make Bare document.') { |file| bare_doc(file) }
|
150
|
+
opt.on('--head FILE', 'put headers of maketitle file.') { |file| @head=file }
|
151
|
+
opt.on('--pre FILE', 'put preamble file.') { |file| @pre=file }
|
152
|
+
opt.on('--post FILE', 'put post file.') { |file| @post=file }
|
153
|
+
opt.on('--listings', 'use listings.sty for preformat with style.') {@listings=true }
|
154
|
+
end
|
155
|
+
command_parser.banner = "Usage: hiki2latex [options] FILE"
|
156
|
+
command_parser.parse!(@argv)
|
157
|
+
plain_doc(@argv[0]) if @argv[0]!=nil
|
158
|
+
exit
|
159
|
+
end
|
160
|
+
|
161
|
+
# pre, post, listingsなどの拡張を処理
|
162
|
+
def plain_doc(file)
|
163
|
+
if @listings==true then
|
164
|
+
puts listings_preamble
|
165
|
+
elsif @pre==nil then
|
166
|
+
puts "\\documentclass[12pt,a4paper]{jsarticle}"
|
167
|
+
puts "\\usepackage[dvipdfmx]{graphicx}"
|
168
|
+
else
|
169
|
+
puts File.read(@pre)
|
170
|
+
end
|
171
|
+
puts "\\begin{document}"
|
172
|
+
puts File.read(@head) if @head!=nil
|
173
|
+
plain_tex = HikiDoc.to_latex(File.read(file),{:listings=>@listings})
|
174
|
+
puts mod_abstract(plain_tex)
|
175
|
+
puts File.read(@post) if @post!=nil
|
176
|
+
puts "\\end{document}"
|
177
|
+
end
|
178
|
+
|
179
|
+
def bare_doc(file)
|
180
|
+
bare_doc = HikiDoc.to_latex(File.read(file),{:level=>@level,:listings=>@listings})
|
181
|
+
puts kill_head_tableofcontents(bare_doc)
|
182
|
+
end
|
183
|
+
```
|
184
|
+
|
185
|
+
## kill_head_line
|
186
|
+
kill_head_lineで付録(bare_text)にtocが含まれている場合は削除.
|
187
|
+
```ruby
|
188
|
+
def kill_head_tableofcontents(text)
|
189
|
+
text.gsub!(/^\\tableofcontents/,'')
|
190
|
+
end
|
191
|
+
```
|
192
|
+
|
193
|
+
## mod_abstract
|
194
|
+
mod_abstractで\verb|\section{abstract}|で書かれた内容をabstract環境へ移行する.一行づつの処理は有限状態マシン的に処理するのがいいらしい(Ruby Best Practice, p.112).一旦contentとabstractを分けて,その後,tableofcontentの前にabstractを挿入している.delete_at(0)は一行目に\verb|\section{【abstract】}|が存在するため.
|
195
|
+
```ruby
|
196
|
+
# convert section to abstract
|
197
|
+
def mod_abstract(text)
|
198
|
+
abstract,section = [],[]
|
199
|
+
content = ""
|
200
|
+
text.split("\n").each do |line|
|
201
|
+
case line
|
202
|
+
when /^\\section(.+)/
|
203
|
+
section.push $1
|
204
|
+
end
|
205
|
+
|
206
|
+
case section[-1]
|
207
|
+
when /.+abstract.+/
|
208
|
+
abstract << line+"\n"
|
209
|
+
when /.+概要.+/
|
210
|
+
abstract << line+"\n"
|
211
|
+
else
|
212
|
+
content << line+"\n"
|
213
|
+
end
|
214
|
+
end
|
215
|
+
abstract.delete_at(0)
|
216
|
+
content.gsub!(/\\tableofcontents/){|text|
|
217
|
+
tt="\n\\abstract\{\n#{abstract.join}\}\n\\tableofcontents"
|
218
|
+
}
|
219
|
+
return content
|
220
|
+
end
|
221
|
+
```
|
@@ -0,0 +1,97 @@
|
|
1
|
+
# 【変更作業の手順】
|
2
|
+
- hikiをhtmlに変換するhikidoc.rbに加えていく形で変更
|
3
|
+
- hikidocについて調べよ(澄田の宿題)
|
4
|
+
|
5
|
+
```ruby
|
6
|
+
bob% diff hikidoc.rb master-hikidoc/lib/hikidoc.rb
|
7
|
+
39d38
|
8
|
+
< require './hiki2latex.rb'
|
9
|
+
58,61d56
|
10
|
+
< def HikiDoc.to_latex(src, options = {})
|
11
|
+
< new(LatexOutput.new(""), options).compile(src)
|
12
|
+
< end
|
13
|
+
<
|
14
|
+
916,917c911
|
15
|
+
< # puts HikiDoc.to_html(ARGF.read(nil))
|
16
|
+
< puts HikiDoc.to_latex(ARGF.read(nil))
|
17
|
+
---
|
18
|
+
> puts HikiDoc.to_html(ARGF.read(nil))
|
19
|
+
```
|
20
|
+
|
21
|
+
- hiki2latex.rbに変更を加えていく.
|
22
|
+
# 【設計】
|
23
|
+
## 【maketitleの挿入】
|
24
|
+
latex formatに仕込む際にテキストの順序が前後するコマンドが幾つかある.
|
25
|
+
\\maketitleの前に置かれた,
|
26
|
+
- title
|
27
|
+
- author
|
28
|
+
である.これらはheadersとしてtext部と別に返すことも可能である.
|
29
|
+
具体的には,
|
30
|
+
|
31
|
+
| to_html | *fを返す|
|
32
|
+
|:----|:----|
|
33
|
+
| to_latex | *fと*headを返す.|
|
34
|
+
|
35
|
+
なおto_htmlとの互換性を維持するため*headを後に返すようにしている.
|
36
|
+
|
37
|
+
しかし,この部分は,to_htmlとの整合性を考えるとto_latexで処理してしまった方がよい.
|
38
|
+
そこで,
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
def finish
|
42
|
+
@f.string
|
43
|
+
end
|
44
|
+
```
|
45
|
+
となっているのを,
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
def finish
|
49
|
+
if @head != "" then
|
50
|
+
@head << "\\maketitle\n"
|
51
|
+
return @head+@f
|
52
|
+
else
|
53
|
+
return @f
|
54
|
+
end
|
55
|
+
end
|
56
|
+
```
|
57
|
+
とした.
|
58
|
+
|
59
|
+
# 【sample】
|
60
|
+
- 
|
61
|
+
|
62
|
+
# 【pdfの貼り込み】
|
63
|
+
pdfpagesを使おうとすると
|
64
|
+
|
65
|
+
```
|
66
|
+
/usr/local/texlive/2015/texmf-dist/tex/latex/pdfpages/pdfpages.sty:70: LaTeX Er
|
67
|
+
ror: Missing \begin{document}.
|
68
|
+
|
69
|
+
See the LaTeX manual or LaTeX Companion for explanation.
|
70
|
+
Type H <return> for immediate help.
|
71
|
+
...
|
72
|
+
|
73
|
+
l.70 \input{pp\AM@driver.def}
|
74
|
+
```
|
75
|
+
というエラーが出る.この解決法がわからず,incudegraphicsで対応.
|
76
|
+
|
77
|
+
```
|
78
|
+
¥documentclass{jsarticle}
|
79
|
+
¥usepackage[dvipdfmx,hiresbb]{graphicx}
|
80
|
+
¥begin{document}
|
81
|
+
¥includegraphics[width=5cm]{sample.pdf}
|
82
|
+
¥end{document}
|
83
|
+
|
84
|
+
の4行目を
|
85
|
+
¥includegraphics[page=3,width=5cm]{sample.pdf}
|
86
|
+
とすれば、
|
87
|
+
|
88
|
+
普通に3ページ目の画像を使うことができました。
|
89
|
+
|
90
|
+
美文書5版のCD-ROMから普通にインストールした TeXShopの環境です。
|
91
|
+
|
92
|
+
つまり、何も(といっても、同書 P114 にあるように、
|
93
|
+
--shell--escape--commands=extractbb
|
94
|
+
をTeXShop環境設定の「内部設定」タブ pdfTex のLatexのオプションとして付け加えています。)特別なことをせずに、ページ指定をするだけで、できてしまいました。
|
95
|
+
|
96
|
+
次の、美文書の版には、ページ設定についても解説していただくといいかも知れません。>奥村先生お願いします。
|
97
|
+
```
|