hack のためのネタ帳, etc,,,

状況

とりあえず、
を参考に .tex を fontspec 使うように書き換えて試してみたんだが、
$ make
...
! Fatal Package fontspec Error: The fontspec package requires either XeTeX or
(fontspec)                      LuaTeX.
(fontspec)                      
(fontspec)                      You must change your typesetting engine to,
(fontspec)                      e.g., "xelatex" or "lualatex"instead of
(fontspec)                      "latex" or "pdflatex".

Type <return> to continue.
 ...                                              
                                                  
l.45 \msg_fatal:nn {fontspec} {cannot-use-pdftex}
                                                 
? 
とか言われて、sphinx の latex に馴染まない。

coloremoji パッケージなんてものをみつけたので これも試してみたが、upLaTeX でしか使えないとのことで駄目。
upLaTeX 以外でも OK な bxcoloremoji パッケージなる後継があって、これだと行けた。

という事で、とりあえず、Miscellaneous Symbols だったら bxcoloremoji で出力するフィルタ書いてみた。

emojinize.rb

#!/bin/sh
exec ruby -x "$0" "$@"
#!ruby
# coding: utf-8

require 'unicode/blocks'

if ARGF.file == STDIN && !File.pipe?(STDIN)
  puts "Usage: ${File.basename $0} [<file.tex>]"
  puts "    Use bxcoloremoji for Miscellaneous Symbols"
  exit
end

# Replace "Miscellaneous Symbols" to \coloremoji{x}
hasemoji = false
s = ""
ARGF.read.chars.each{|c|
if Unicode::Blocks.blocks(c)[0] =~ /Miscellaneous Symbols/
    s += '\coloremoji{%c}' % c.ord
    hasemoji = true
else
    s += c
  end
}

# Insert bxcoloremoji style
s = s.split("\n").map{|line|
    line += "\n\\usepackage[dvipdfmx]{graphicx}\n\\usepackage{bxcoloremoji}" if line =~ /^\\documentclass/
    line
} if hasemoji

puts s
_build/latex 以下に上記スクリプトと bxcoloremoji の必要ファイル放り込んで、
make latex
(
  cd _build/latex
  for i in *.tex; do
    [ "$i.orig" -a "$i.orig" -ot "$i" ] || continue
    mv -v "$i" "$i.orig"
    ./emojinize.rb "$i.orig" > "$i"
    touch -r "$i.orig" "$i"
  done
  make
)
ってすれば、とりあえず、emoji 入りの latex を pdf 化できた。
面倒なのでこれ sphinx に組み込みたいな

そうは言っても Sphinx 本家へのコミットはハードル高そうなので、とりあえずコマンド一発で BXcoloremoji 化した .tex に変換して PDF 化までするコマンドこさえて公開した。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます