techbooster / review-template Goto Github PK
View Code? Open in Web Editor NEWTechBoosterで利用しているRe:VIEWのテンプレート(B5/A5/電子書籍)を公開しています
TechBoosterで利用しているRe:VIEWのテンプレート(B5/A5/電子書籍)を公開しています
catalog.ymlには以下のようにpreface.reを指定しているが、リポジトリにはそのようなファイルが存在しない。
cat catalog.yml
PREDEF:
- preface.re
CHAPS:
- article.re
APPENDIX:
POSTDEF:
- contributors.re
articles/preface.reがなにかしらの内容で存在すること。
masterだけでなくTemplate-A5も同じ様子です。
https://twitter.com/kmuto/status/1345699773014151171
手元では動くものができています。
仕組みはシンプルなので、てくぶテンプレートに含めることも簡単です。
今はスタイルを https://github.com/Yasunari/ascolorbox のスタイルセットから借りて使っていますが、デザインがあればそれを使うこともさほど難しくありません。
PR前に、まずはこういうのを入れるのの可否ご意見伺いたく思います。
https://twitter.com/hirosys_/status/1041688401961836544 からのスレッドより。
sourcecaption同様に、Re:VIEW 2の公式側のlayout.tex.erbでは定義しているマクロ内容が、TechBooster layout.tex.erbでは一部不足しており、locale.ymlのchapterなどの変更が効果を発揮しません。
\newcommand{\reviewprepartname}{<%= escape_latex(@locale_latex["prepartname"]) %>}
...
\ifdefined\prepartname
\renewcommand{\prepartname}{\reviewprepartname}
\fi
\ifdefined\postpartname
\renewcommand{\postpartname}{\reviewpostpartname}
\fi
\ifdefined\prechaptername
\renewcommand{\prechaptername}{\reviewprechaptername}
\fi
\ifdefined\postchaptername
\renewcommand{\postchaptername}{\reviewpostchaptername}
\fi
Re:VIEW 3になるとこのあたりは分離されるので、あまり気にしなくてよくなるはずですが。
素晴らしい環境をありがとうございます。
#66 でpandoc2reviewが使えるようになりましたが、Gruntfile.jsで.md
がcleanされるため.re
に変換される.md
が常にない状態になります。
コメントアウトすることで.md
が残り.re
に変換されることを確認しました。
今のreview-style.styは後方互換性のために図・表のfloatは
\floatplacement{figure}{H} ←必ずそこに置く
\floatplacement{table}{htp} ←そこに置けなかったらフロートしてtopか新ページ
と設定しています。てくぶの場合は別にこれにひきずられる必要もないので、techbooster-doujin-base.styのほうで上書きして両方ともHにしたほうが、直感的な結果にはなりそうです(フロートは扱いがなかなか難しい)。
目次が左半分でおわったときなどのこりの右ページのノンブルがきえてて通しノンブルが打ててない問題がある(これ前はなかったと思うのでエンバグしてしまっている気がする…)
直し方わかりますか? @kmuto
Re:VIEW 3.0では2.0互換機能があるので、このテンプレートも review_version: 2.0
のままであればビルドできますが、review_version: 3.0
にするといくつか課題があります。
\continuenumber
の代替機能が導入されたのでそちらを使うようにする(単純に\continuenumber
を捨てればOK?)\setlength{\textheight}
等の指定をやめる(たぶん単純に捨てればOK)\captionsize
, \captionwidth
を定義しているのでnewcommandを変更する(renewcommandにすればOK?)年末年始でpandoc2review https://github.com/kmuto/pandoc2review というツールを作ったのですが、
これを使うとMarkdownファイルから変換するmd2review的な用途のほかに、
Markdownで原稿を書いてそのままシームレスにRe:VIEWに通す(.reのほうとも共存できる)ということができます。
技術書典/てくぶスタイル利用者にはメリットが大きいのではないかと思います。
取り込む場合、今のところ変換ロジックはrake前提にしているので、
のどちらかが必要になりそうです。
includefullpagegraphicsにノンブルを打ってる都合で表紙にもつくのはちょっと嬉しくないかも。
別名定義するようなパッチを作ってみます。
Re:VIEW 5.4.0 リリースにあわせて再度setup.shで環境を作り直したところ、pdf 生成が失敗するようになりました。
% npm run pdf
> [email protected] pdf
> grunt pdf
Running "clean:review" (clean) task
>> 0 paths cleaned.
Running "shell:preprocess" (shell) task
Running "shell:compile2pdf" (shell) task
rake aborted!
Psych::DisallowedClass: Tried to load unspecified class: Date
(eval):2:in `date'
lib/tasks/z01_pandoc2review.rake:34:in `block in <top (required)>'
/usr/local/opt/ruby/bin/bundle:25:in `load'
/usr/local/opt/ruby/bin/bundle:25:in `<main>'
Tasks: TOP => pdf => ReVIEW-Template.pdf => pandoc2review
(See full trace by running task with --trace)
Warning: Command failed: bundle exec rake pdf
rake aborted!
Psych::DisallowedClass: Tried to load unspecified class: Date
(eval):2:in `date'
lib/tasks/z01_pandoc2review.rake:34:in `block in <top (required)>'
/usr/local/opt/ruby/bin/bundle:25:in `load'
/usr/local/opt/ruby/bin/bundle:25:in `<main>'
Tasks: TOP => pdf => ReVIEW-Template.pdf => pandoc2review
(See full trace by running task with --trace)
Use --force to continue.
Aborted due to warnings.
%
articles/lib/tasks/z01_pandoc2review.rake
のYAML.load_file()
が、エラーになっていることが原因のようです。
エラーの理由は、YAMLのバックエンド実装 Psych v4.0.0以降の仕様変更(チェック強化)によるもののようでした。
ruby/psych#487
取り急ぎバンビちゃんさんの記事を参考に、YAML.load_file()
している2箇所をYAML.unsafe_load_file()
にしたところ、エラーは回避できています。
いくつか対処方法があるかと思いますので、正式な対応(修正)をお願いいたします。
<ご参考>
私の環境では psych 4.0.3 が使われていました。
% gem list
*** LOCAL GEMS ***
abbrev (default: 0.1.0)
base64 (default: 0.1.1)
benchmark (default: 0.2.0)
bigdecimal (default: 3.1.1)
bundler (default: 2.3.7)
cgi (default: 0.3.1)
csv (default: 3.2.2)
date (default: 3.2.2)
debug (1.4.0)
delegate (default: 0.2.0)
did_you_mean (default: 1.6.1)
digest (default: 3.1.0)
drb (default: 2.1.0)
english (default: 0.7.1)
erb (default: 2.2.3)
error_highlight (default: 0.3.0)
etc (default: 1.3.0)
fcntl (default: 1.0.1)
fiddle (default: 1.1.0)
fileutils (default: 1.6.0)
find (default: 0.1.1)
forwardable (default: 1.3.2)
getoptlong (default: 0.1.1)
image_size (3.0.1, 2.1.0)
io-console (default: 0.5.11)
io-nonblock (default: 0.1.0)
io-wait (default: 0.2.1)
ipaddr (default: 1.2.4)
irb (default: 1.4.1)
json (default: 2.6.1)
logger (default: 1.5.0)
matrix (0.4.2)
minitest (5.15.0)
mutex_m (default: 0.1.1)
net-ftp (0.1.3)
net-http (default: 0.2.0)
net-imap (0.2.3)
net-pop (0.1.1)
net-protocol (default: 0.1.2)
net-smtp (0.3.1)
nkf (default: 0.1.1)
observer (default: 0.1.1)
open-uri (default: 0.2.0)
open3 (default: 0.1.1)
openssl (default: 3.0.0)
optparse (default: 0.2.0)
ostruct (default: 0.5.2)
pandoc2review (1.4.0)
pastel (0.8.0)
pathname (default: 0.2.0)
power_assert (2.0.1)
pp (default: 0.3.0)
prettyprint (default: 0.1.1)
prime (0.1.2)
pstore (default: 0.1.1)
psych (default: 4.0.3)
racc (default: 1.6.0)
rake (13.0.6)
rbs (2.1.0)
rdoc (default: 6.4.0)
readline (default: 0.0.3)
readline-ext (default: 0.1.4)
reline (default: 0.3.0)
resolv (default: 0.2.1)
resolv-replace (default: 0.1.0)
review (5.4.0, 5.3.0, 5.0.0)
rexml (3.2.5)
rinda (default: 0.1.1)
rouge (3.28.0, 3.26.1, 3.26.0)
rss (0.2.9)
ruby2_keywords (default: 0.0.5)
rubyzip (2.3.2, 2.3.0)
securerandom (default: 0.1.1)
set (default: 1.0.2)
shellwords (default: 0.1.0)
singleton (default: 0.1.1)
stringio (default: 3.0.1)
strscan (default: 3.0.1)
syslog (default: 0.1.0)
tempfile (default: 0.1.2)
test-unit (3.5.3)
time (default: 0.2.0)
timeout (default: 0.2.0)
tmpdir (default: 0.1.2)
tsort (default: 0.1.0)
tty-color (0.6.0)
tty-logger (0.6.0)
typeprof (0.21.2)
un (default: 0.2.0)
unicode-eaw (2.2.0)
uri (default: 0.11.0)
weakref (default: 0.1.1)
yaml (default: 0.2.0)
zlib (default: 2.1.1)
%
いずれにせよRe:VIEW 3系用に対応を進めていただく必要はありますが。
style.scss、style-web.scss、epub_style.scssがありますが、css化する処理はどこかにあるんでしょうか?
node-sassはインストール対象になっているようなのですが。
ActionsでビルドできるとGitHubで管理が完結するので、あったらいいなと思いました
どうしても2.5系を使い続けたいという向きに、簡単に取り出す方法があったほうがよさそうに思います。
Re:VIEW 2.4.0→2.5で破棄したパラメータがこちらのlayout.tex.erbで使われていました(副作用をリリースノートに入れていなかったようです、すいません)。
<%- if @config["usepackage"] -%>
<%= @config["usepackage"] %>
<%- end -%>
↓
<%- if @config[”texstyle”] -%>
<%- [@config[”texstyle”]].flatten.each do |x| -%>
\usepackage{<%= x %>}
<%- end -%>
<%- end -%>
2.4.0以前でも同じ挙動は保持されるはずです。
コラム内で、段落の先頭がインデントされません。
環境にtcolorboxを使っているせいだと思われます。
sty/techbooster-doujin.sty
に以下のような行を追加すればよさそうです。
\renewenvironment{reviewcolumn}{%
\vspace{\baselineskip}
\begin{tcolorbox}[colback=white]
\setlength{\parindent}{1zw}% % ←これを追加
}{%
\end{tcolorbox}
\vspace{\baselineskip}
}
Dockerなのでいいのではという話はありますが、現状ので「found 6 vulnerabilities (3 low, 2 moderate, 1 critical) in 226 scanned packages」というのが出ています。
root@dc7a1b6d19d5:/book# npm audit
=== npm audit security report ===
# Run npm install --save-dev [email protected] to resolve 5 vulnerabilities
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ grunt [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ grunt > grunt-legacy-util > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/577 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate │ Regular Expression Denial of Service │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ underscore.string │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ grunt [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ grunt > grunt-legacy-util > underscore.string │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/745 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ grunt [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ grunt > grunt-legacy-log > grunt-legacy-log-utils > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/577 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ grunt [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ grunt > grunt-legacy-log > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/577 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate │ Regular Expression Denial of Service │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ underscore.string │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ grunt [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ grunt > grunt-legacy-log > underscore.string │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/745 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────┐
│ Manual Review │
│ Some vulnerabilities require your attention to resolve │
│ │
│ Visit https://go.npm.me/audit-guide for additional guidance │
└──────────────────────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Critical │ Command Injection │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ open │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ No patch available │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ grunt-open [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ grunt-open > open │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/663 │
└───────────────┴──────────────────────────────────────────────────────────────┘
found 6 vulnerabilities (3 low, 2 moderate, 1 critical) in 226 scanned packages
run `npm audit fix` to fix 5 of them.
1 vulnerability requires manual review. See the full report for details.
\reviewtt(実体\texttt)内でseqsplitを仕込んでいるんだけど、スペースが含まれているときに飛んでしまう問題がある(\obeyspacesが効かない)。
C89 Techboosterに鹿野さんが協力されたときに何か裏テクを使ったと思われるような記述があるが…?
http://note.golden-lucky.net/2016/01/tex.html
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.