├── .github └── main.workflow ├── .gitignore ├── Gemfile ├── Makefile ├── README-pdfmaker.md ├── README.md ├── _config.yml ├── catalog.yml ├── config-print.yml ├── config-sp.yml ├── config.yml ├── hook_beforetex.rb ├── images-epub └── cover.jpg ├── images-pdf └── cover.pdf ├── intro.re ├── layouts └── layout.tex.erb ├── okuduke.re ├── profile.re ├── review-ext.rb ├── sample.re ├── sty └── test-tibooks-maker.tex ├── style.css └── terms.re /.github/main.workflow: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *~ 3 | *.bak 4 | 5 | .bundle/ 6 | vendor/ 7 | 8 | book*.pdf 9 | book*.epub 10 | book-*/ 11 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "review", "~> 2.0.0" 4 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | OBJS=book.epub book.pdf book-sp.pdf book-print.pdf 2 | 3 | BUNDLEEXEC= 4 | __epubmaker=${BUNDLEEXEC} review-epubmaker 5 | __pdfmaker=${BUNDLEEXEC} review-pdfmaker 6 | 7 | all: ${OBJS} 8 | 9 | # book.epub: 電子書籍用EPUB(カラー画像) 10 | book.epub: config.yml 11 | ##数式の画像化 12 | which pdfcrop 2>&1 >/dev/null 13 | which magick 2>&1 >/dev/null 14 | ##syntax highlighting via Rouge 15 | which rougify 2>&1 >/dev/null 16 | 17 | test -L images && rm -f images ||: 18 | test -d images-epub && ln -s images-epub images 19 | ${__epubmaker} $< 20 | test -L images && rm -f images ||: 21 | 22 | # book.pdf: プレビュー電子書籍用PDF(カラー画像、閲覧用リンクあり、仕上がりサイズ) 23 | book.pdf: config.yml 24 | test -L images && rm -f images ||: 25 | test -d images-pdf && ln -s images-pdf images 26 | ${__pdfmaker} $< 27 | test -L images && rm -f images ||: 28 | 29 | # book-sp.pdf: 京葉SPおよびAmazonPOD用PDF(グレースケール画像、印刷用リンクなし、仕上がりサイズ) 30 | book-sp.pdf: config-sp.yml 31 | test -L images && rm -f images ||: 32 | test -d images-pdf && ln -s images-pdf images 33 | ${__pdfmaker} $< 34 | test -L images && rm -f images ||: 35 | 36 | # book-print.pdf: オフセット用PDF(グレースケール画像、印刷用リンクなし、トンボあり、デフォルトオフ) 37 | book-print.pdf: config-print.yml 38 | test -L images && rm -f images ||: 39 | test -d images-pdf && ln -s images-pdf images 40 | ${__pdfmaker} $< 41 | test -L images && rm -f images ||: 42 | 43 | clean: 44 | rm -rf ${OBJS} book-pdf book-*-pdf book-epub 45 | find . -name "*~" -delete 46 | test -L images && rm -f images ||: 47 | 48 | .PHONY: clean 49 | 50 | ## end of file 51 | -------------------------------------------------------------------------------- /README-pdfmaker.md: -------------------------------------------------------------------------------- 1 | thinkit-books LaTeX スタイルファイル群設定 2 | ==================== 3 | 4 | Think IT Books各種 PDF を生成する仕組みは、 5 | (第一弾)Think IT Books用LaTeXスタイルファイル群 6 | thinkit-books のクラスオプションに設定することで実現しています。 7 | ここで、クラスオプションとは、親TeXファイルにおいて、 8 | 以下のような位置にカンマ(,)区切りで記述するオプションです。 9 | 10 | ```latex 11 | \documentclass[クラスオプションたち(省略可能)]{thinkit-books] 12 | ``` 13 | 14 | このクラスオプションオプションたちは、 15 | Re:VIEW設定ファイル config.yaml 内の texdocumentclass において、 16 | 以下のような位置に記述します。 17 | 18 | ```yaml 19 | texdocumentclass: ["thinkit-books", "クラスオプションたち(省略可能)"] 20 | ``` 21 | 22 | 23 | 利用可能な主なクラスオプション 24 | -------------------- 25 | 26 | thinkit-books v2.1 において利用可能な主なクラスオプションは、以下のとおりです。 27 | 28 | ### トンボ 29 | 30 | トンボの有無ならびに、トンボ有りのときの用紙サイズを指定します。 31 | 32 | * tombo: 33 | トンボをつける 34 | * tombopaper=b5: トンボ用紙サイズを指定する(例:b5) 35 | * default: a4; b5 36 | 37 | ### ツメ 38 | 39 | ツメ有りのときの章総数を指定します。 40 | 41 | * chapter:total-number=6: 章総数を指定する(例:第6章まである場合、6) 42 | * appendixchapter:total-number=3: 章総数を指定する(例:付録Cまである場合、3) 43 | 44 | ### PDF埋込フォントプロファイル 45 | 46 | ## pdf:kanjimap=preview,% default: preview; available: preview,release に変更 47 | 48 | PDF埋込フォントプロファイルを指定します(後述のPDFデータ作成形式 `cameraready` 参照)。 49 | thinkitcls のLaTeXクラスファイルオプション pdf:kanjimap に対して、以下の値が利用できます。 50 | 51 | * pdf:kanjimap=preview: PDF埋込するフォントを上書き指定する(例:源ノ明朝、源ノ角ゴシック) 52 | * preview: プレビュー用(源ノ明朝、源ノ角ゴシックで代替) 53 | * release: 製品リリース用(主にMORISAWA PASSPORT) 54 | 55 | これまで利用していたpdf:kanjimapに与える値は、 56 | PDFに埋め込む和文フォントプロファイルとして、以下の値を指定していました。 57 | 58 | * ipaex: フリーフォント(IPAex、Mig, Mogaなど) 59 | * hiragino, hiragino-legacy: Mac OS Xに同梱されているヒラギノフォント 60 | * morisawa: MORISAWA PASSPORT 61 | 62 | 今回 tibooks-maker-2.3.0 の更新において、 63 | これらの値 ipaex, hiragino, hiragino-legacy, morisawa は、下位互換のために保持し、 64 | 以下のような動作をします。 65 | 66 | * ipaex, hiragino, hiragino-legacy: preview と同等 67 | * morisawa: release と同等 68 | 69 | 70 | ### PDFデータ作成形式 71 | 72 | 印刷用 `print`、閲覧用 `pdf`、プレビュー用 `preview` のいずれかの形式を指定します。 73 | 74 | * cameraready=pdf: データ作成形式を指定する(例:閲覧用PDF) 75 | * preview: デフォルトで preview(源ノ明朝、源ノ角ゴシック)を埋め込む 76 | * print, pdf: デフォルトで preview(源ノ明朝、源ノ角ゴシック)を埋め込む 77 | * default: print; preview, pdf 78 | 79 | ### 用紙サイズ 80 | 81 | 用紙サイズ(+裁ち落とし)を設定します(後述の基本版面設計 `Q`, `W`, `L`, `H`, `head`, `gutter`ならびに、基本版面設定例参照)。 82 | 83 | * paper=a5+3mm: 用紙サイズを指定する(例:A5 裁ち落とし+3mm) 84 | * paper を指定することで、基本版面設計(Q, W, L, H, head, gutter)の初期設定がされる 85 | * default: b5var; {a5,b5,b5var,12mo}{,+3mm,+3.17mm,+4mm} 86 | 87 | ### 基本版面設計 88 | 89 | * 基本版面設計:基本版面設計を上書き指定する(後述の基本版面設定例参照参照)(例:B5変形 paper=b5var{,+Xmm} のときのそれぞれの初期値) 90 | * Q=13, W=43, L=32, H=24, head=22mm, gutter=23mm 91 | 92 | ### 各種直前改丁頁制御 93 | 94 | * 各種直前改丁頁制御:default: right; left, page 95 | * frontmatter:break-before=page 96 | * mainmatter:break-before=page 97 | * backmatter:break-before=page 98 | * appendix:break-before=page 99 | * toc:break-before=page 100 | * idx:break-before=page 101 | 102 | 基本版面設定例 103 | -------------------- 104 | 105 | クラスオプション `paper` を指定することで、基本版面設計(Q, W, L, H, head, gutter)の初期設定がされます。 106 | なお、ノドはAmazon POD仕様により20mm以上、地および小口はともになりゆきです。 107 | 108 | 1. [x] B5変形 b5var W182mm x H232mm(paperを省略したときのデフォルト) 109 | * [x] 13Q 43W 32L 24H 天22mm ノド23mm 110 | 1. B5 b5 W182mm x H257mm 111 | * [x] 13Q 43W 35L 24H 天22mm ノド23mm 112 | * `paper=b5, % Q=13, W=43, L=35, H=24, %B5 default (13Q)` 113 | 1. A5 a5 W148mm x H210mm 114 | * [x] 12Q 38W 34L 20.5H 天20mm ノド20mm 115 | * `paper=a5, % Q=12, W=38, L=34, H=20.5, head=20mm, gutter=20mm, %A5 default (12Q)` 116 | 1. 四六 12mo W128mm x H188mm 117 | * [x] 12Q 31W 30L 20.5H 天18mm ノド20mm 118 | * `paper=12mo, Q=13, W=29, L=28, H=22, head=18mm, gutter=20mm, %四六 (13Q)` 119 | 120 | 各用紙サイズに対して、±1Q した基本版面の設計例とその設定例は、以下のとおりです。 121 | 122 | 1. B5変形 b5var W182mm x H232mm 123 | * 14Q 40W 30L 25.5H 天22mm ノド23mm 124 | * `paper=b5var, Q=14, W=40, L=30, H=25.5, %example: B5var (14Q)` 125 | 1. B5 b5 W182mm x H257mm 126 | * 14Q 40W 34L 25.5H 天22mm ノド23mm 127 | * `paper=b5, Q=14, W=40, L=34, H=25.5, %example: B5 (14Q)` 128 | 1. A5 a5 W148mm x H210mm 129 | * 13Q 35W 32L 22H 天20mm ノド20mm 130 | * `paper=a5, Q=13, W=35, L=32, H=22, head=20mm, gutter=20mm, %example: A5 + 13Q` 131 | 1. 四六 12mo W128mm x H188mm 132 | * 13Q 29W 28L 22H 天18mm ノド20mm 133 | * `paper=12mo, % Q=12, W=31, L=30, H=20.5, head=18mm, gutter=20mm, %四六 default (12Q)` 134 | 135 | ### 運用上必要になるlatexコマンド 136 | 137 | まず、`@{|latex|hogehoge}`で、ビルダー単位で実行可能なコマンドを挿入できます(latexを指定することでPDF作成時にだけ呼ばれ、EPUBでは反映されない)。基本的にLaTexのコマンドを入れれば処理されます。 138 | 139 | * `@{|latex|\allowbreak}` 140 | 141 | 指定位置で改行を入れます、allow〜なので命令としては弱め、強制改行の場合は`\break`、または`\\`なども併用します。なお、「/」や「_」の直後に`@{|latex|\allowbreak}`を入れるとコケます。 142 | 143 | * `@{|latex|\clearpage}` 144 | 145 | このコマンドを入れるとそれ以前までの図版をすべて出力してから改ページされます。単純な改ページ`\newpage`とは少し意味合いが異なり図版位置を操作する場合はこちらのほうが使い勝手が良かったりします。 146 | 147 | * `@{|latex|\vfill}` 148 | 149 | 下寄せで配置したい場合など、縦方向に空きを持たせるコマンドです、`\vspace{長さ}`で絶対値指定ができたと思います。 150 | 151 | 以降、気付いたら追記します! 152 | 153 | 参考 154 | http://www.latex-cmd.com/ 155 | 156 | ### TeXファイルを直接修正する場合は 157 | 158 | 段組や表組みの調整など、TeXの一時ファイルを修正してコンパイルするには、 159 | 160 | `cd book-pdf/` 161 | 162 | で、テンポラリのフォルダーに移動し、当該の`.tex`ファイルを修正、その後、 163 | 164 | `ptex2pdf -u -l book.tex` 165 | 166 | コマンドでTeX→PDFに変換します。 167 | 168 | ### ImageMagickで画像を変換する 169 | 170 | ※mogrifyにするとフォルダー内の全画像に一括適用されます 171 | 172 | グレースケール画像を変換する 173 | 174 | ``` 175 | convert a.jpg -type Grayscale b.jpg 176 | mogrify -type Grayscale *.* 177 | ``` 178 | 179 | epsに変換する 180 | 181 | ``` 182 | convert a.jpg a.eps 183 | mogrify -format eps *.* 184 | ``` 185 | 186 | 画像に枠を付ける(太さや色はお好みで) 187 | 188 | ``` 189 | convert -border 1x1 -bordercolor black a.jpg a_waku.jpg 190 | mogrify -border 1x1 -bordercolor black *.* 191 | ``` 192 | 193 | ### 表のセルサイズ(横幅)を手動で調整する 194 | 195 | tableタグの直前にtsizeで指定します、列数と合わせるようにします。単位は確かmmです。 196 | 197 | ``` 198 | //tsize[|latex|20,45,75] 199 | //table[table01][]{ 200 | } 201 | ``` 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # tibooks-maker: OBSOLETE 2 | 3 | This repository is obsolete. 4 | We recommend you to try other workflow instead like [vvakame/docker-review: Re:VIEW build container by docker](https://github.com/vvakame/docker-review). 5 | Therefore, please DO NOT open issues, fork or send pull request to this repository. 6 | 7 | tibooks-makerの提供は終了いたしました。 8 | DockerコンテナによるRe:VIEW文章のビルドなどへ移行されることを推奨いたします。 9 | したがいまして、本リポジトリのissueやfork、pull requestをお控えいただきますよう、お願いいたします。 10 | 11 | 12 | --------------------------------- 13 | 14 | # What's this? 15 | "tibooks-maker" is easy publishing for pBooks & eBooks. 16 | customized Re:VIEW-platform for [Think IT Books](https://thinkit.co.jp/tibooks) 17 | 18 | * tibooks-maker is OS X apps (all in one package) constructed from the following components: 19 | * Re:VIEW 20 | * Ruby 21 | * TeX Live 22 | * uplatex 23 | * dvipdfmx 24 | 25 | Copyright ©2015-2017 Impress Corporation, An Impress Group Company. All rights reserved.
26 | special thanks Munehiro Yamamoto (Green Cherry Ltd.) 27 | 28 | ## Installing 29 | 30 | Download the latest Version. 31 | 32 | [https://github.com/thinkitcojp/tibooks-maker/releases](https://github.com/thinkitcojp/tibooks-maker/releases) 33 | 34 | ## Getting Started 35 | 36 | 1. `tibooks-maker-X.Y.Z-YYYYMMDD.dmg`を開き、`tibooks-maker.app`を`/Applications/`フォルダへインストールします。 37 | 1. `tibooks-maker.app`をダブルクリックしてRe:VIEW製作フォルダを開くと、`[tibooks-maker]` 環境のターミナル `Terminal.app` が起動します。 38 | * `tibooks-maker.app`にRe:VIEW製作フォルダ(ファイル)をドラッグ&ドロップすることもできます。 39 | * ターミナル上で `$ open -a tibooks-maker -- Re:VIEW製作フォルダ`を実行してもかまいません。 40 | * 旧版のように `$ . /Applications/tibooks-maker.app/setup.sh`を実行して、`[tibooks-maker]` 環境に移ることもできます。 41 | 1. tibooks-makerリポジトリをクローンしたら、 `gmake all` コマンドを試してみましょう。 42 | book.epub: 電子書籍用EPUB(カラー画像), book.pdf: 電子書籍用PDF, book-sp.pdf: 紙書籍用PDFの3点が生成されます。 43 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /catalog.yml: -------------------------------------------------------------------------------- 1 | PREDEF: 2 | - terms.re 3 | - intro.re 4 | 5 | CHAPS: 6 | - sample.re 7 | 8 | APPENDIX: 9 | 10 | POSTDEF: 11 | - profile.re 12 | - okuduke.re 13 | -------------------------------------------------------------------------------- /config-print.yml: -------------------------------------------------------------------------------- 1 | # book-print.pdf: オフセット用PDF(グレースケール画像、印刷用リンクなし、トンボあり、デフォルトオフ) 2 | 3 | inherit: ["config.yml"] 4 | 5 | bookname: book-print 6 | 7 | pdfmaker: 8 | # coverimage: tobira.pdf 9 | texdocumentclass: ["thinkit-books", "tombo, pdf:kanjimap=release, cameraready=print, backmatter:break-before=page,"] 10 | -------------------------------------------------------------------------------- /config-sp.yml: -------------------------------------------------------------------------------- 1 | # book-sp.pdf: 京葉SPおよびAmazonPOD用PDF(グレースケール画像、印刷用リンクなし、仕上がりサイズ) 2 | 3 | inherit: ["config.yml"] 4 | 5 | bookname: book-sp 6 | 7 | pdfmaker: 8 | # coverimage: tobira.pdf 9 | texdocumentclass: ["thinkit-books", "pdf:kanjimap=release, cameraready=print, backmatter:break-before=page,"] 10 | -------------------------------------------------------------------------------- /config.yml: -------------------------------------------------------------------------------- 1 | # book.epub: 電子書籍用EPUB(カラー画像), book.pdf: プレビュー電子書籍用PDF(カラー画像、閲覧用リンクあり、仕上がりサイズ) 2 | 3 | # simple sample of config.yml 4 | review_version: 2.0 5 | 6 | debug: true 7 | 8 | ## inherited configuratons 9 | 10 | # inherit: ["config-default.yml"] 11 | 12 | 13 | ## Book Metadata 14 | 15 | bookname: book 16 | language: ja 17 | booktitle: ★★★書名★★★(Think IT Books) 18 | aut: ["★★★著者名★★★"] 19 | # cov: ["Masayoshi Takahashi"] 20 | # ill: ["Masayoshi Takahashi"] 21 | # trl: null 22 | # edt: null 23 | pbl: "株式会社インプレス" 24 | # prt: "Re:VIEW Printing inc." 25 | date: 201★-★★-★★ 26 | history: [["201★-★★-★★"]] 27 | rights: (C) 2016 ★★★権利者名★★★, all rights reserved. 28 | description: template config.yml file for Think IT Books series 29 | urnid: urn:uid:https://thinkit.co.jp/tibooks 30 | # isbn: null 31 | 32 | ## Book Structure 33 | 34 | toclevel: 3 35 | secnolevel: 2 36 | direction: "ltr" 37 | 38 | ## Extra Pages 39 | 40 | cover: null 41 | coverimage: cover.jpg 42 | # titlepage: null 43 | # titlefile: null 44 | # originaltitlefile: null 45 | # creditfile: null 46 | colophon: null 47 | # backcover: null 48 | # profile: null 49 | # profiletitle: "About Authors" 50 | # advfile: null 51 | 52 | ## Syntax Highlighting 53 | 54 | highlight: 55 | html: "rouge" 56 | # latex: "listings" 57 | 58 | ## for HTML 59 | 60 | htmlext: html 61 | stylesheet: ["style.css"] 62 | 63 | ## for EPUB 64 | 65 | epubmaker: 66 | # coverimage: tobira-1.png 67 | toc: true 68 | htmlext: xhtml 69 | cover_linear: true 70 | externallink: true 71 | imgmath: true 72 | 73 | ## for PDFMaker 74 | 75 | pdfmaker: 76 | coverimage: cover.pdf 77 | # coverimage: tobira-1.pdf 78 | texdocumentclass: ["thinkit-books", "pdf:kanjimap=preview, cameraready=pdf, backmatter:break-before=page,"] 79 | # hanmen, % draft, 80 | # % hanmengrid, 81 | # % tombo, % mentuke, 82 | # % showremark, 83 | # cameraready=pdf,%default: print; available: preview,print,pdf 84 | # % paper=b5var+3.17mm,%default: b5var; available: b5var{,+3mm,+3.17mm,+4mm} 85 | # % 86 | # % toc:break-before=page,%default: right 87 | # % backmatter:break-before=page,%default: right 88 | toc: true 89 | # makeindex: true 90 | # makeindex_dic: book_project.dic 91 | # makeindex_sty: book_project.ist 92 | makeindex_mecab: null 93 | texcommand: uplatex 94 | dvioptions: "-d 5 -z 3" 95 | hook_beforetexcompile: ./hook_beforetex.rb 96 | # hook_aftertexcompile: ./hook_aftertex.rb 97 | ## end of pdfmaker 98 | -------------------------------------------------------------------------------- /hook_beforetex.rb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # coding: utf-8 3 | 4 | require 'fileutils' 5 | 6 | def rewrite(fname) 7 | File.open("#{fname}") do |fi| 8 | File.open("#{fname}-n", "w") do |fo| 9 | fo.puts yield(fi.readlines.join) 10 | end 11 | end 12 | end 13 | 14 | ## 手動調整 15 | # Dir.glob("#{ARGV[0]}/*.tex").each do |f| 16 | # rewrite(f) {|s| 17 | # return nil if s.nil? 18 | # ## some processes 19 | # 20 | # } 21 | # File.rename("#{f}-n", "#{f}") 22 | # end 23 | 24 | 25 | ## Think IT 用著者紹介および奥付 26 | Dir.glob("#{ARGV[0]}/book.tex").each do |f| 27 | rewrite("book.tex") {|s| 28 | s.gsub(/input\{(.+?)\.tex\}/, 'include{\1}'). 29 | sub('\include{terms}', '\begin{disclaimer}\include{terms}\end{disclaimer}'). 30 | sub('\include{profile}', '\begin{writers}\include{profile}\end{writers}'). 31 | sub('\include{okuduke}', '\begin{colophon}\include{okuduke}\end{colophon}') 32 | } 33 | File.rename("#{f}-n", "#{f}") 34 | end 35 | -------------------------------------------------------------------------------- /images-epub/cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thinkitcojp/tibooks-maker/c900a049fb8d17b334b8b584bc6d01e4045c6e1a/images-epub/cover.jpg -------------------------------------------------------------------------------- /images-pdf/cover.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thinkitcojp/tibooks-maker/c900a049fb8d17b334b8b584bc6d01e4045c6e1a/images-pdf/cover.pdf -------------------------------------------------------------------------------- /intro.re: -------------------------------------------------------------------------------- 1 | = はじめに 2 | 3 | 4 | -------------------------------------------------------------------------------- /layouts/layout.tex.erb: -------------------------------------------------------------------------------- 1 | % -*- coding: utf-8 -*- 2 | \documentclass[dvipdfmx,% 3 | <%= @documentclassoption %> 4 | ]{<%= @documentclass %>} 5 | \usepackage{<%= @documentclass %>-local} 6 | 7 | \bookcoverimage{<%= @config["coverimage"] %>} 8 | \booktitle{<%= @config["booktitle"] %>} 9 | \bookauthors{<%= @authors %>} 10 | \bookdate{<%= @config["date"] %>} 11 | \bookprt{<%= @config["prt"] %>} 12 | 13 | \begin{document} 14 | \frontmatter 15 | <% if @config["titlepage"] %><% if @custom_titlepage %><%= @custom_titlepage %><% else %><% if @config["coverimage"] %> 16 | \makecoverimage<% end %> 17 | % \makebooktitle 18 | <% end %><% end %> 19 | <%= @input_files["PREDEF"] %> 20 | <% if @config["toc"] %> 21 | \setcounter{tocdepth}{<%= @config["toclevel"] %>} 22 | \begin{TOC}\tableofcontents\end{TOC} 23 | <% end %> 24 | 25 | \mainmatter 26 | <%= @input_files["CHAPS"] %> 27 | <% if @input_files["APPENDIX"] %> 28 | \appendix 29 | <%= @input_files["APPENDIX"] %> 30 | <% end %> 31 | 32 | <%- if @input_files["POSTDEF"] -%> 33 | \backmatter 34 | <%- if @config["pdfmaker"]["makeindex"] -%> 35 | \printindex 36 | <%- end -%> 37 | <%= @input_files["POSTDEF"] %> 38 | <% end %> 39 | \end{document} 40 | -------------------------------------------------------------------------------- /okuduke.re: -------------------------------------------------------------------------------- 1 | = 奥付 2 | 3 | @{本書のご感想をぜひお寄せください}@
{} 4 | @{http://book.impress.co.jp/books/XXXXXXXXXX}@
{} 5 | @{「アンケートに答える」をクリックしてアンケートにぜひご協力ください。はじめての方は「CLUB Impress(クラブインプレス)」にご登録いただく必要があります(無料)。アンケート回答者の中から、抽選で商品券(1万円分)や図書カード(1,000円分)などを毎月プレゼント。当選は賞品の発送をもって代えさせていただきます。}@
{} 6 | @
{} 7 | @
{} 8 | @
{} 9 | ●本書の内容に関するご質問は、書名・ISBN・お名前・電話番号と、該当するページや具体的な質問内容、お使いの動作環境などを明記のうえ、インプレスカスタマーセンターまでメールまたは封書にてお問い合わせください。電話やFAX等でのご質問には対応しておりません。なお、本書の範囲を超える質問に関してはお答えできませんのでご了承ください。@
{} 10 | 11 | ●落丁・乱丁本はお手数ですがインプレスカスタマーセンターまでお送りください。送料弊社負担にてお取り替えさせていただきます。但し、古書店で購入されたものについてはお取り替えできません。@
{} 12 | 13 | ■読者の窓口                      ■書店/販売店のご注文窓口@
{} 14 | インプレスカスタマーセンター              株式会社インプレス 受注センター@
{} 15 | 〒101-0051 東京都千代田区神田神保町一丁目105番地   TEL 048-449-8040@
{} 16 | TEL 03-6837-5016 / FAX 03-6837-5023    FAX 048-449-8041@
{} 17 | info@impress.co.jp@
{} 18 | @
{} 19 | 20 | @{|latex|\begin{Large\}} 21 | ★★★書名★★★(Think IT Books)@
{} 22 | @{|latex|\end{Large\}} 23 | 24 | ★★★★年★★月★★日 初版発行@
{} 25 | @
{} 26 | 著 者 ★★★著者名★★★@
{} 27 | 発行人 土田 米一@
{} 28 | 編集人 高橋 隆志@
{} 29 | 発行所 株式会社インプレス@
{} 30 |     〒101-0051 東京都千代田区神田神保町一丁目105番地@
{} 31 |     TEL 03-6837-4635(出版営業統括部)@
{} 32 |     ホームページ @{http://book.impress.co.jp/}@
{} 33 | 34 | 本書は著作権法上の保護を受けています。本書の一部あるいは全部について(ソフトウェア及びプログラムを含む)、株式会社インプレスから文書による許諾を得ずに、いかなる方法においても無断で複写、複製することは禁じられています。@
{} 35 | 36 | Copyright © ★★★★ ★★★権利者名★★★. All rights reserved.@
{} 37 | 印刷所 京葉流通倉庫株式会社@
{} 38 | ISBN978-4-295-★★★★★-★ C3055@
{} 39 | Printed in Japan 40 | -------------------------------------------------------------------------------- /profile.re: -------------------------------------------------------------------------------- 1 | = 著者紹介 2 | 3 | #@# 著者名、所属会社役職、紹介文の3ブロック。スタッフは下寄せで配置 4 | 5 | : ★★ ★★ 6 | 7 | ★★★★★ 8 | 9 | ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 10 | 11 | : ★★ ★★ 12 | 13 | ★★★★★ 14 | 15 | ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 16 | 17 | 18 | 19 | #@# スタッフは下寄せで配置。必要に応じて、改頁を入れた方に変更してください。 20 | #@# @{|latex|\clearpage\mbox{}\vfill} 21 | @{|latex|\vfill} 22 | 23 | === スタッフ 24 | 25 | * ★★ ★★(表紙デザイン) 26 | * ★★ ★★(紙面レイアウト) 27 | * ★★ ★★(Web連載編集) 28 | -------------------------------------------------------------------------------- /review-ext.rb: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | module ReVIEW 3 | module TextUtils 4 | def convert_inencoding(str, enc) 5 | # skip the NKF convertion 6 | str 7 | end 8 | end 9 | 10 | class LATEXBuilder 11 | def dt(str) 12 | str.sub!(/\[/){'\lbrack{}'} 13 | str.sub!(/\]/){'\rbrack{}'} 14 | # removed the forcely ad-hoc line-breaking tags '\mbox{} \\\\' 15 | puts '\item[' + str + ']' # \mbox{} \\\\ 16 | end 17 | 18 | def lead(lines) 19 | latex_block 'lead', lines 20 | end 21 | 22 | def table_begin(ncols) 23 | if @latex_tsize 24 | puts macro('begin', 'reviewtable', @latex_tsize) 25 | elsif @tsize 26 | cellwidth = @tsize.split(/\s*,\s*/).collect {|i| 27 | if i =~ /\A([LCRP])/ 28 | align = $1 29 | "#{align}{#{i.sub(align, '')}mm}" 30 | else 31 | "P{#{i}mm}" 32 | end 33 | } 34 | puts macro('begin', 'reviewtable', '|'+(cellwidth.join('|'))+'|') 35 | else 36 | puts macro('begin', 'reviewtablesetup') 37 | puts macro('begin', 'tabularx', '\hsize', (['|'] * (ncols + 1)).join('x')) 38 | end 39 | puts '\hline' 40 | # These tags @tsize, @latex_tsize are nil when putting table_end 41 | # @tsize = nil 42 | # @latex_tsize = nil 43 | end 44 | 45 | def table_end 46 | if @latex_tsize 47 | puts macro('end', 'reviewtable') 48 | elsif @tsize 49 | puts macro('end', 'reviewtable') 50 | else 51 | puts macro('end', 'tabularx') 52 | puts macro('end', 'reviewtablesetup') 53 | end 54 | if @table_caption 55 | puts '\end{table}' 56 | end 57 | @tsize = nil 58 | @latex_tsize = nil 59 | @table_caption = nil 60 | blank 61 | end 62 | 63 | def table_header(id, caption) 64 | if caption.present? 65 | @table_caption = true 66 | puts '\begin{table}[H]' 67 | puts macro('caption', compile_inline(caption)) 68 | end 69 | puts macro('label', table_label(id)) 70 | end 71 | 72 | def th(s) 73 | if /\\\\/i =~ s 74 | # macro('reviewth', macro('shortstack[l]', s)) 75 | array = s.split("\\\\") 76 | macro('reviewth', array.join('\ccr ')) 77 | else 78 | macro('reviewth', s) 79 | end 80 | end 81 | 82 | def td(s) 83 | if /\\\\/ =~ s 84 | # macro('shortstack[l]', s) 85 | array = s.split("\\\\") 86 | array.join('\ccr ') 87 | else 88 | s 89 | end 90 | end 91 | 92 | def tr(rows) 93 | print rows.join(' & ') 94 | puts ' \\\\ \hline' 95 | end 96 | 97 | def image_image(id, caption, metric) 98 | metrics = parse_metric("latex", metric) 99 | puts "\\begin{reviewimage}%%#{id}" 100 | if metrics.present? 101 | puts "\\includekeepaspectratiographics[#{metrics}]{#{@chapter.image(id).path}}" 102 | else 103 | puts "\\includekeepaspectratiographics{#{@chapter.image(id).path}}" 104 | end 105 | if caption.present? 106 | puts macro('caption', compile_inline(caption)) 107 | end 108 | puts macro('label', image_label(id)) 109 | puts '\end{reviewimage}' 110 | end 111 | 112 | def indepimage(id, caption=nil, metric=nil) 113 | metrics = parse_metric("latex", metric) 114 | puts "\\begin{reviewindepimage}%%#{id}" 115 | if metrics.present? 116 | puts "\\includekeepaspectratiographics[#{metrics}]{#{@chapter.image(id).path}}" 117 | else 118 | puts "\\includekeepaspectratiographics{#{@chapter.image(id).path}}" 119 | end 120 | if caption.present? 121 | puts macro('reviewindepimagecaption', 122 | %Q[#{I18n.t("numberless_image")}#{I18n.t("caption_prefix")}#{compile_inline(caption)}]) 123 | end 124 | puts '\end{reviewindepimage}' 125 | end 126 | 127 | # def index(str) 128 | # '\index{' + escape_index(text(str)).gsub("@", "@") + '}' 129 | # end 130 | 131 | end # end of class LATEXBuilder 132 | 133 | 134 | class HTMLBuilder 135 | def make_math_image(str, path, fontsize = 10) # 12 136 | fontsize2 = (fontsize * 1.2).round.to_i 137 | texsrc = <<-EOB 138 | \\documentclass[10pt,uplatex]{jsarticle} 139 | \\RequirePackage[utf8]{inputenc} 140 | \\RequirePackage[prefernoncjk]{pxcjkcat} 141 | \\cjkcategory{sym18,sym19,grek}{cjk} 142 | \\usepackage{amsmath} 143 | \\usepackage{amsthm} 144 | \\usepackage{amssymb} 145 | \\usepackage{amsfonts} 146 | \\usepackage{anyfontsize} 147 | \\usepackage{bm} 148 | \\pagestyle{empty} 149 | 150 | \\begin{document} 151 | \\fontsize{#{fontsize}}{#{fontsize2}}\\selectfont #{str} 152 | \\end{document} 153 | EOB 154 | Dir.mktmpdir do |tmpdir| 155 | tex_path = File.join(tmpdir, 'tmpmath.tex') 156 | dvi_path = File.join(tmpdir, 'tmpmath.dvi') 157 | pdf_path = File.join(tmpdir, 'tmpmath.pdf') 158 | File.write(tex_path, texsrc) 159 | ## 160 | ## * latex -> uplatex: destroy the LaTeX typesetting log 161 | ## * dvipng -> sips (pre-installed in macOS): set output resolution to 144 dpi 162 | # system("latex --interaction=nonstopmode --output-directory=#{tmpdir} #{tex_path} 2>&1 >/dev/null && dvipng -D 144 -T tight -z9 -o #{path} #{dvi_path} || exit 1") 163 | system("uplatex --interaction=nonstopmode --output-directory=#{tmpdir} #{tex_path} 2>&1 >/dev/null && dvipdfmx -o - #{dvi_path} | pdfcrop - #{pdf_path} && magick -density 200x200 #{pdf_path} #{path} || exit 1") 164 | end 165 | end 166 | end # end of class HTMLBuilder 167 | 168 | end 169 | -------------------------------------------------------------------------------- /sample.re: -------------------------------------------------------------------------------- 1 | = test 2 | 3 | == test 4 | 5 | === test 6 | -------------------------------------------------------------------------------- /sty/test-tibooks-maker.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thinkitcojp/tibooks-maker/c900a049fb8d17b334b8b584bc6d01e4045c6e1a/sty/test-tibooks-maker.tex -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /* css reset 4 | ---------------------------------------------------------------- */ 5 | body { 6 | margin: 0; 7 | padding: 0; 8 | font-size: 100%; 9 | vertical-align: baseline; 10 | line-height: 1.75; 11 | background: transparent; 12 | 13 | word-spacing: normal; 14 | letter-spacing: normal; 15 | white-space: normal; 16 | word-wrap: break-word; 17 | text-align: justify; 18 | 19 | -webkit-line-break: normal; 20 | -epub-line-break: normal; 21 | 22 | -webkit-word-break: normal; 23 | -epub-word-break: normal; 24 | 25 | -webkit-hyphens: auto; 26 | -epub-hyphens: auto; 27 | 28 | -webkit-text-underline-position: under left; 29 | -epub-text-underline-position: under left; 30 | } 31 | div,p { 32 | display: block; 33 | width: auto; 34 | height: auto; 35 | margin: 0; 36 | padding: 0; 37 | } 38 | body,div,p { 39 | text-indent: 0; 40 | } 41 | body > p, 42 | div > p { 43 | 44 | } 45 | h1,h2,h3,h4,h5,h6 { 46 | display: block; 47 | margin: 0; 48 | padding: 0; 49 | font-size: 100%; 50 | font-weight: inherit; 51 | background: transparent; 52 | } 53 | img { 54 | width: auto; 55 | height: auto; 56 | margin: 0; 57 | padding: 0; 58 | border: none; 59 | vertical-align: baseline; 60 | background: transparent; 61 | } 62 | img.max { 63 | max-width: 100%; 64 | max-height: 100%; 65 | } 66 | a { 67 | font-style: inherit; 68 | font-weight: inherit; 69 | text-decoration: inherit; 70 | color: inherit; 71 | background: transparent; 72 | } 73 | 74 | /* tibooks dafalt 75 | ---------------------------------------------------------------- */ 76 | body { 77 | margin: 0; 78 | padding: 0; 79 | font-size: 1em; 80 | line-height:1.6; 81 | font-family:serif; 82 | /* 83 | word-break: normal; 84 | -webkit-line-break: after-white-space; 85 | */ 86 | } 87 | p, ul, ol, dl, pre, table { 88 | font-family: serif; 89 | font-size: 0.875em; 90 | } 91 | 92 | /* Heading */ 93 | h1 { 94 | font-family: sans-serif-ja, sans-serif; 95 | font-size: 1.40em; 96 | font-weight: bold; 97 | line-height: 1.25; 98 | margin: 0 0 1.5em 0; 99 | } 100 | h2 { 101 | font-size: 1.20em; 102 | font-family: sans-serif-ja, sans-serif; 103 | font-weight: bold; 104 | padding-left: 0.5em; 105 | border-style: none none none solid; 106 | border-width: 5px; 107 | border-color: #0f83b1; 108 | margin: 1.5em 0 1.5em 0; 109 | } 110 | h3 { 111 | font-size: 1.10em; 112 | font-family: sans-serif-ja, sans-serif; 113 | font-weight: bold; 114 | margin: 1.0em 0 0 0; 115 | } 116 | h4, h5, h6 { 117 | margin:0.7em 0; 118 | padding: 0; 119 | text-align: left; 120 | line-height: 1.6; 121 | font-weight: bold; 122 | } 123 | /* Paragraph */ 124 | p { 125 | margin:0.7em 0; 126 | padding: 0; 127 | text-align: left; 128 | text-indent: 1em; 129 | line-height: 1.6; 130 | } 131 | div.lead p { 132 | color: #666; 133 | line-height: 1.6; 134 | font-size: 0.75em; 135 | } 136 | /* link */ 137 | a:link, 138 | a:visited, 139 | a:hover, 140 | a:focus, 141 | a:active { 142 | color: #0000ff; 143 | } 144 | /* List */ 145 | ul, ol { 146 | margin: 2em 0 2em 2em; 147 | padding: 0; 148 | list-style-position: outside; 149 | } 150 | ul > li, 151 | ol > li { 152 | margin: 0 0 0.7em 0; 153 | padding: 0; 154 | line-height: 1.6; 155 | } 156 | dl { 157 | margin: 2em 0; 158 | padding: 0; 159 | } 160 | dt { 161 | margin: 0; 162 | padding: 0; 163 | font-weight: bold; 164 | } 165 | dd { 166 | margin: 0 0 1em 2em; 167 | padding: 0; 168 | line-height: 1.6; 169 | } 170 | /* Table 171 | p.tablecaptionではなく 172 | table caption {}を使う方が良いかも? 173 | */ 174 | table { 175 | margin: 0 auto 2em auto; 176 | border-collapse: collapse; 177 | } 178 | table tr th { 179 | background-color: #eee; 180 | border:1px #aaa solid; 181 | font-size: 0.75em; 182 | font-weight: normal; 183 | } 184 | table tr td { 185 | padding: 0.3em; 186 | border:1px #aaa solid; 187 | font-size: 0.75em; 188 | } 189 | p.tablecaption, table caption { 190 | margin: 0; 191 | color: #666; 192 | font-size: 0.75em; 193 | font-weight: bold; 194 | text-indent: 0; 195 | } 196 | /* Quote */ 197 | blockquote { 198 | margin: 2em 0 2em 2em; 199 | padding: 0.3em 1em; 200 | border: 1px #aaa solid; 201 | } 202 | /* Column Block */ 203 | div.column { 204 | margin: 2em 0 2em 2em; 205 | padding: 0.3em 1em; 206 | background-color: #eee; 207 | -webkit-border-radius: 0.7em; 208 | } 209 | div.column *{ 210 | margin:0.7em 0; 211 | } 212 | div.column ul, 213 | div.column ol { 214 | list-style-position: inside; 215 | } 216 | /* Code Block */ 217 | /* 218 | ※シンプルにできるかも 219 | div.code {} 220 | div.code pre.list, 221 | div.code pre.cmd {} 222 | div.code p.caption {} 223 | */ 224 | div.code, div.caption-code, div.source-code, div.emlist-code, div.emlistnum-code { 225 | margin: 1em 0 2em 2em; 226 | padding: 0; 227 | } 228 | pre.emlist, pre.source, pre.list { 229 | margin: 0; 230 | padding: 5px; 231 | border: 1px #aaa solid; 232 | } 233 | div p.caption { 234 | margin: 0; 235 | color: #666; 236 | font-size: 0.75em; 237 | font-weight: bold; 238 | } 239 | div.cmd-code pre.cmd { 240 | margin: 0; 241 | padding: 5px; 242 | color: #ccc; 243 | font-weight: bold; 244 | background-color: #444; 245 | -webkit-border-radius: 0.5em; 246 | } 247 | pre.cmd, pre.emlist, pre.list, pre.source { 248 | white-space: pre-wrap; 249 | } 250 | 251 | /* Image Block */ 252 | /* div.image p.caption {} 253 | ※captionをそろえた方が良いかも?*/ 254 | div.image { 255 | margin: 2em auto; 256 | padding: 0; 257 | } 258 | div.image img { 259 | display: inline-block; 260 | page-break-inside: avoid; 261 | max-height: 100%; 262 | max-width: 100%; 263 | } 264 | div.image p.caption { 265 | margin: 0 auto; 266 | text-align: center; 267 | color: #666; 268 | font-size: 0.75em; 269 | font-weight: bold; 270 | text-indent: 0; 271 | } 272 | /* Footnote Block */ 273 | /* p.footnoteはいらないかも? */ 274 | div.footnote { 275 | } 276 | div.footnote p.footnote { 277 | color: #666; 278 | line-height: 1.6; 279 | font-size: 0.75em; 280 | text-indent: 0; 281 | } 282 | /* Colophon */ 283 | div.colophon { 284 | margin: 3em auto; 285 | } 286 | div.colophon p { 287 | text-indent: 0; 288 | } 289 | div.colophon p.title { 290 | font-size: 1.5em; 291 | } 292 | div.colophon table { 293 | margin: 1em 0 2em; 294 | border: none; 295 | } 296 | div.colophon table tr th { 297 | background-color: #fff; 298 | font-size: 1.2em; 299 | font-weight: normal; 300 | border: none; 301 | } 302 | div.colophon table tr td { 303 | font-size: 1.2em; 304 | font-weight: normal; 305 | border: none; 306 | } 307 | 308 | /* Inline */ 309 | a[href], 310 | a:link, 311 | a:visited { 312 | border-bottom: 1px dotted #531084; 313 | text-decoration: none; 314 | } 315 | b { 316 | font-weight: bold; 317 | } 318 | strong{ 319 | font-weight: bold; 320 | } 321 | em { 322 | font-style: italic; 323 | } 324 | 325 | /* syntax highlight (with Rouge) 326 | ---------------------------------------------------------------- */ 327 | .highlight table td { padding: 5px; } 328 | .highlight table pre { margin: 0; } 329 | .highlight { 330 | color: #faf6e4; 331 | background-color: #122b3b; 332 | } 333 | .highlight .gl { 334 | color: #dee5e7; 335 | background-color: #4e5d62; 336 | } 337 | .highlight .gp { 338 | color: #a8e1fe; 339 | font-weight: bold; 340 | } 341 | .highlight .c, .highlight .cd, .highlight .cm, .highlight .c1, .highlight .cs { 342 | color: #6c8b9f; 343 | font-style: italic; 344 | } 345 | .highlight .cp { 346 | color: #b2fd6d; 347 | font-weight: bold; 348 | font-style: italic; 349 | } 350 | .highlight .err { 351 | color: #fefeec; 352 | background-color: #cc0000; 353 | } 354 | .highlight .gr { 355 | color: #cc0000; 356 | font-weight: bold; 357 | font-style: italic; 358 | } 359 | .highlight .k, .highlight .kd, .highlight .kv { 360 | color: #f6dd62; 361 | font-weight: bold; 362 | } 363 | .highlight .o, .highlight .ow { 364 | color: #4df4ff; 365 | font-weight: bold; 366 | } 367 | .highlight .p, .highlight .pi { 368 | color: #4df4ff; 369 | } 370 | .highlight .gd { 371 | color: #cc0000; 372 | } 373 | .highlight .gi { 374 | color: #b2fd6d; 375 | } 376 | .highlight .ge { 377 | font-style: italic; 378 | } 379 | .highlight .gs { 380 | font-weight: bold; 381 | } 382 | .highlight .gt { 383 | color: #dee5e7; 384 | background-color: #4e5d62; 385 | } 386 | .highlight .kc { 387 | color: #f696db; 388 | font-weight: bold; 389 | } 390 | .highlight .kn { 391 | color: #ffb000; 392 | font-weight: bold; 393 | } 394 | .highlight .kp { 395 | color: #ffb000; 396 | font-weight: bold; 397 | } 398 | .highlight .kr { 399 | color: #ffb000; 400 | font-weight: bold; 401 | } 402 | .highlight .gh { 403 | color: #ffb000; 404 | font-weight: bold; 405 | } 406 | .highlight .gu { 407 | color: #ffb000; 408 | font-weight: bold; 409 | } 410 | .highlight .kt { 411 | color: #b2fd6d; 412 | font-weight: bold; 413 | } 414 | .highlight .no { 415 | color: #b2fd6d; 416 | font-weight: bold; 417 | } 418 | .highlight .nc { 419 | color: #b2fd6d; 420 | font-weight: bold; 421 | } 422 | .highlight .nd { 423 | color: #b2fd6d; 424 | font-weight: bold; 425 | } 426 | .highlight .nn { 427 | color: #b2fd6d; 428 | font-weight: bold; 429 | } 430 | .highlight .bp { 431 | color: #b2fd6d; 432 | font-weight: bold; 433 | } 434 | .highlight .ne { 435 | color: #b2fd6d; 436 | font-weight: bold; 437 | } 438 | .highlight .nl { 439 | color: #ffb000; 440 | font-weight: bold; 441 | } 442 | .highlight .nt { 443 | color: #ffb000; 444 | font-weight: bold; 445 | } 446 | .highlight .m, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mb, .highlight .mx { 447 | color: #f696db; 448 | font-weight: bold; 449 | } 450 | .highlight .ld { 451 | color: #f696db; 452 | font-weight: bold; 453 | } 454 | .highlight .ss { 455 | color: #f696db; 456 | font-weight: bold; 457 | } 458 | .highlight .s, .highlight .sb, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .sr, .highlight .s1 { 459 | color: #fff0a6; 460 | font-weight: bold; 461 | } 462 | .highlight .se { 463 | color: #4df4ff; 464 | font-weight: bold; 465 | } 466 | .highlight .sc { 467 | color: #4df4ff; 468 | font-weight: bold; 469 | } 470 | .highlight .si { 471 | color: #4df4ff; 472 | font-weight: bold; 473 | } 474 | .highlight .nb { 475 | font-weight: bold; 476 | } 477 | .highlight .ni { 478 | color: #999999; 479 | font-weight: bold; 480 | } 481 | .highlight .w { 482 | color: #BBBBBB; 483 | } 484 | .highlight .go { 485 | color: #BBBBBB; 486 | } 487 | .highlight .nf { 488 | color: #a8e1fe; 489 | } 490 | .highlight .py { 491 | color: #a8e1fe; 492 | } 493 | .highlight .na { 494 | color: #a8e1fe; 495 | } 496 | .highlight .nv, .highlight .vc, .highlight .vg, .highlight .vi { 497 | color: #a8e1fe; 498 | font-weight: bold; 499 | } 500 | -------------------------------------------------------------------------------- /terms.re: -------------------------------------------------------------------------------- 1 | = 免責事項 2 | 3 | * 本書は、インプレスが運営するWebメディア「Think IT」で、「★★★★★★★★★★」として連載された技術解説記事を書籍用に再編集したものです。 4 | * 本書の内容は、執筆時点(★★★★年★★月〜★★月)までの情報を基に執筆されています。紹介したWebサイトやアプリケーション、サービスは変更される可能性があります。 5 | * 本書の内容によって生じる、直接または間接被害について、著者ならびに弊社では、一切の責任を負いかねます。 6 | * 本書中の会社名、製品名、サービス名などは、一般に各社の登録商標、または商標です。なお、本書では©、®、TMは明記していません。 7 | --------------------------------------------------------------------------------