Coder Social home page Coder Social logo

techbooster / review-template Goto Github PK

View Code? Open in Web Editor NEW
289.0 289.0 128.0 3.46 MB

TechBoosterで利用しているRe:VIEWのテンプレート(B5/A5/電子書籍)を公開しています

Ruby 3.95% JavaScript 2.42% C++ 0.26% CSS 3.88% TeX 84.63% Shell 0.33% SCSS 4.37% HTML 0.16%

review-template's People

Contributors

dependabot[bot] avatar kengotoda avatar kenhys avatar kmuto avatar kwappa avatar mhidaka avatar mochikoastech avatar mstssk avatar muojp avatar nasa9084 avatar nkzn avatar nowsprinting avatar ryusa avatar sue445 avatar takahashim avatar vvakame avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

review-template's Issues

catalog.ymlに記載のpreface.reが存在しない

問題点

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前に、まずはこういうのを入れるのの可否ご意見伺いたく思います。

{pre,post}{chapter,part}name などのlocale.yml参照定義がされていない

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になるとこのあたりは分離されるので、あまり気にしなくてよくなるはずですが。

tableフロートもH(強制here)にする?

今のreview-style.styは後方互換性のために図・表のfloatは

\floatplacement{figure}{H} ←必ずそこに置く
\floatplacement{table}{htp} ←そこに置けなかったらフロートしてtopか新ページ

と設定しています。てくぶの場合は別にこれにひきずられる必要もないので、techbooster-doujin-base.styのほうで上書きして両方ともHにしたほうが、直感的な結果にはなりそうです(フロートは扱いがなかなか難しい)。

改ページでノンブルが消失している

目次が左半分でおわったときなどのこりの右ページのノンブルがきえてて通しノンブルが打ててない問題がある(これ前はなかったと思うのでエンバグしてしまっている気がする…)

直し方わかりますか? @kmuto

Re:VIEW 3.0対応

Re:VIEW 3.0では2.0互換機能があるので、このテンプレートも review_version: 2.0 のままであればビルドできますが、review_version: 3.0 にするといくつか課題があります。

  • ファイル構成が変わったのでそれに合わせる(review-updateコマンドが導入されたのでそれを使えばある程度は自動で対応される)
  • layout/layout.tex.erb を原則使わなくなるので、そこの記述の一部を techbooster-doujin.styに移す必要がある
  • 通しノンブルのための\continuenumberの代替機能が導入されたのでそちらを使うようにする(単純に\continuenumberを捨てればOK?)
  • ページレイアウトをgeometryを捨てて自前で持つようにしたので、\setlength{\textheight}等の指定をやめる(たぶん単純に捨てればOK)
  • \captionsize, \captionwidthを定義しているのでnewcommandを変更する(renewcommandにすればOK?)

pandoc2reviewを使えるようにする?

年末年始でpandoc2review https://github.com/kmuto/pandoc2review というツールを作ったのですが、
これを使うとMarkdownファイルから変換するmd2review的な用途のほかに、
Markdownで原稿を書いてそのままシームレスにRe:VIEWに通す(.reのほうとも共存できる)ということができます。
技術書典/てくぶスタイル利用者にはメリットが大きいのではないかと思います。

取り込む場合、今のところ変換ロジックはrake前提にしているので、

  • node版の今のreview-command直接呼び出しを変える
  • catalog.ymlのパースおよび変換呼び出しロジックをnodeに移植する

のどちらかが必要になりそうです。

電子版表紙のノンブルをとる

includefullpagegraphicsにノンブルを打ってる都合で表紙にもつくのはちょっと嬉しくないかも。
別名定義するようなパッチを作ってみます。

pandoc2reviewタスクがエラーになる

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.rakeYAML.load_file()が、エラーになっていることが原因のようです。

エラーの理由は、YAMLのバックエンド実装 Psych v4.0.0以降の仕様変更(チェック強化)によるもののようでした。
ruby/psych#487

取り急ぎバンビちゃんさんの記事を参考に、YAML.load_file()している2箇所をYAML.unsafe_load_file()にしたところ、エラーは回避できています。
スクリーンショット 2022-03-04 12 05 30

いくつか対処方法があるかと思いますので、正式な対応(修正)をお願いいたします。

<ご参考>
私の環境では 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)
% 

scssファイルのとりあつかい

style.scss、style-web.scss、epub_style.scssがありますが、css化する処理はどこかにあるんでしょうか?
node-sassはインストール対象になっているようなのですが。

layout.tex.erbの変更

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}
}

npmのcriticalメッセージ

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.