2020年4月25日土曜日

DialogHandler+PPc



画像とかをtwitterにうpするとき、PPcから選べるようにする。DialogHandlerを利用。以前はPPvから起動できるようにしてたが、使い勝手が悪く使わなくなっていた。

以下を編集して取込。

KC_main = { ; PPcメイン窓
\ENTER ,*ifmatch CX,%n %: *execute ,%'ppcx_cmd' %: *stop
 %K"@\ENTER"
}
_Command = { ; ユーザコマンド・関数
changedialog = *ifmatch !CX,%n %: *alias ppcx_cmd = %%Ob D:\bin\DialogHandler\DialogHandler.x86-64.exe %%#FCD %%: %%K"@Q" %: *ppc -r -bootid:x -single
}

一行編集から*changedialogを実行すると、PPC[X]が起動する。目的のファイルにカーソルを合わせてShift+Enterで、ダイアログが切り替わる。
ちなみにエイリアスをかませたりとややこしいことをしてるのは、PPC[X]を別の用途でも使いたいから

2020年4月24日金曜日

複数の窓の位置と大きさを一度に変更

窓を複数枚運用していると、大きさや位置をそれぞれ手動で調整するのが面倒になる。
そこで、一度に変更するスクリプトを作った。
PPx Window Moduleが必要。またScript Moduleは最新のものを。

SetDimensions.js

//!*script

// 要Window Module
// 引数として
// C_A 5 5 600 600 ,C_B 5 605 600 600 ,V_A 605 5 600 600
// のように「窓ID 左端の座標 上端の座標 幅 高さ」を,で区切って取得
// それを再現する

// 引数がなければ終了
if (PPx.Arguments.Length < 1){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var ary;
var win_id;
for(i = 0; i < PPx.Arguments.Length; i++) {
  ary = PPx.Arguments.Item(i).split(/\s+/);
  win_id = ary[0].slice(-1);
  if (ary[0].slice(0,1)=="C"){
    PPx.Execute("%Oi *ppc -r -bootid:"+win_id);
    PPx.Execute("*windowposition %NC"+win_id+","+ary[1]+","+ary[2]);
    PPx.Execute("*windowsize %NC"+win_id+","+ary[3]+","+ary[4]);
  } else {
    PPx.Execute("%Oi *ppv -bootid:"+win_id);
    PPx.Execute("*windowposition %NV"+win_id+","+ary[1]+","+ary[2]);
    PPx.Execute("*windowsize %NV"+win_id+","+ary[3]+","+ary[4]);
  }
}

使い方


*script %0Script\SetDimensions.js,C_A 5 5 600 600 ,C_B 5 605 600 600 ,V_A 605 5 600 600

と、引数に「窓ID 左端の座標 上端の座標 幅 高さ」を与えると、それぞれのIDのPPCあるいはPPVを起動。窓の位置や大きさを変更する。

*script %0Script\SetDimensions.js, %*getcust(S_dimensions:normal)

のように、与える情報をユーザ変数に登録して使うとかするとスマート。
ちなみに以下は、現在開いている窓の情報をこの形式で取得するためのスクリプト。僕は

echo %*script(%0Script\GetDimensions.js)

で情報を吐き出させて使っている。

GetDimensions.js

//!*script

// 要Window Module
// 実行すると
// C_A 5 5 600 600 ,C_B 5 605 600 600 ,V_A 605 5 600 600
// のように「窓ID 左端の座標 上端の座標 幅 高さ」を,で区切った
// 返り値を返す

var ppclist = PPx.Extract('%*ppxlist(-C)').split( "," );
ppclist.pop();
var ppvlist = PPx.Extract('%*ppxlist(-V)').split( "," );
ppvlist.pop();
var winlist = ppclist.concat(ppvlist);
var str = "";
var l,t,w,h;
for(i = 0; i < winlist.length; i++) {
  l = PPx.Extract("%*windowrect(%N"+winlist[i]+",l)");
  t = PPx.Extract("%*windowrect(%N"+winlist[i]+",t)");
  w = PPx.Extract("%*windowrect(%N"+winlist[i]+",w)");
  h = PPx.Extract("%*windowrect(%N"+winlist[i]+",h)");
  str = str + winlist[i]+" "+l+" "+t+" "+w+" "+h+" ,";
}

PPx.Result = str;


2020年4月18日土曜日

LaTeX(upLaTeX)+jlreqで縦書き・二段組の冊子を作る

必要があって十年ぶりくらいにLaTeXについて調べ直し、縦書きの冊子を作った。ていうかTeXって縦書きできたんだね!
忘れる前にそのまとめ。環境はWindows10。

TeXLiveのインストール


TeXLiveをインストール。以前主流だったTeXインストーラ 3よりも簡単にできるようだ。
Acquiring TeX Live as an ISO imageからISOファイルを落としてインストールする。僕のLIVAZ2では数時間かかった。

TeXStudioのインストール


総合環境のTeXStudioをインストールする。xyzzyでやる方法とかもあるが(kyotex-mode - xyzzy lisp - 米澤進吾 ホームページ)、一時的にLaTeXを使えればいいのならこっちのほうが手っ取り早い。

設定


「オプション」→「TeXstudioの設定」→「コマンド」から、LaTeXのコマンドを変更。latex.exeをuplatex.exeにする。


「オプション」→「TeXstudioの設定」→「ビルド」から、「ビルド&表示」を「DVI->PDFチェーン」に、「既定のコンパイラ」を「LaTeX」にする。これで、F5を押せばupLaTeXでDVIファイルをビルド→さらにそれをPDFにして表示、という一連の動作をするようになる。



TeXとLaTeXの関係性がいまいちわかってなかったのだが、TeXは言語あるいは処理系を、LaTeXはマクロ体系を指しているらしい。そして、TeX以外の処理系やLaTeX以外のマクロ体系が存在する。処理系には、和文組版(縦書き含む)が可能なpTeX、さらにそれをUNICODE化したupTeX等。マクロ体系にはそれに対応したpLaTeX、upLaTeX等がある。これらはTeXLiveで既にインストールされていて、設定するだけで使うことができる。

参考:
TeXstudioのインストールと初期設定 ― tm23forest.com 
TeX と LaTeX の違い ― ラング・ラグ

文書の構成


大まかには


  1. ドキュメントクラスを指定
  2. 設定をプリアンプルに
  3. \begin{document}\end{document}の間に本文を書く


という構成になっている。

ドキュメントクラスを指定


\documentclass[uplatex,
tate,twoside,openany, % 縦書き、見開きレイアウト
twocolumn, % 二段組
paper=b5,  % 用紙サイズ (a0〜a10 / b0〜b10 / {横mm,縦mm})
fontsize=14Q,jafontsize=14Q, % フォントサイズ
line_length=30zw,   % 一行の文字数 (zw=全角1文字の幅)
number_of_lines=24, % 行数
gutter=20.8mm,        % ノド側の余白
column_gap=10mm,    % 段と段の空白
head_space=20mm,    % 天の余白 (天/地どちらか一方を指定)
%foot_space=15mm,    % 地の余白
baselineskip=1.7zw, % 行送り
headfoot_verticalposition=1.5zw, % ノンブルと本文の間の空白
book, % 書籍のためのスタイル
hanging_punctuation] % ぶら下げ
{jlreq}

LaTeXでは作る文書の種類を最初に指定するようだ。文書の種類とは「本、論文、報告書」といった規模、あるいは縦書きか否かといったもの。ここでは最近熱いらしいjlreqを使う。

設定をプリアンプルに


% ノンブルを小口/下に (小口/上なら以下2行を消す)
\ModifyPageStyle{plain}{nombre_position=bottom-center}
\ModifyPageStyle{plain}{even_running_head=ヘッダーをここに}
\ModifyPageStyle{plain}{running_head_position=top-left}
\ModifyPageStyle{plain}{running_head_font=\footnotesize }
\pagestyle{plain}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[dvipdfmx]{graphicx}

% 倍角ダッシュをつなげる
\def\――{―\kern-.5zw―\kern-.5zw―}

%写真のキャプションに「図」を入れない
\renewcommand{\figurename}{}

\jlreqsetup{
 caption_label_format={図\tatechuyoko{#1}},
}

\ModifyHeading{chapter}{pagebreak=nariyuki}

% 先頭ページ番号

\setcounter{page}{0}

ついで設定を書く。本文の前にあるこの部分をプリアンプルと呼ぶようだ。


本文を書く


\begin{document}
\end{document}


の間に本文を書く。


サンプル


いらすとやからcooking_frypan_teflon.pngを拾い、TeXファイルと同じ場所に置いておきましょう。

\documentclass[uplatex,
tate,twoside,openany, % 縦書き、見開きレイアウト
twocolumn, % 二段組
paper=b5,  % 用紙サイズ (a0〜a10 / b0〜b10 / {横mm,縦mm})
fontsize=14Q,jafontsize=14Q, % フォントサイズ
line_length=30zw,   % 一行の文字数 (zw=全角1文字の幅)
number_of_lines=24, % 行数
gutter=20.8mm,        % ノド側の余白
column_gap=10mm,    % 段と段の空白
head_space=20mm,    % 天の余白 (天/地どちらか一方を指定)
%foot_space=15mm,    % 地の余白
baselineskip=1.7zw, % 行送り
headfoot_verticalposition=1.5zw, % ノンブルと本文の間の空白
book, % 書籍のためのスタイル
hanging_punctuation] % ぶら下げ
{jlreq}

% ノンブルを小口/下に (小口/上なら以下2行を消す)
\ModifyPageStyle{plain}{nombre_position=bottom-center}
\ModifyPageStyle{plain}{even_running_head=ヘッダーをここに}
\ModifyPageStyle{plain}{running_head_position=top-left}
\ModifyPageStyle{plain}{running_head_font=\footnotesize }
\pagestyle{plain}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[dvipdfmx]{graphicx}

% 倍角ダッシュをつなげる
\def\――{―\kern-.5zw―\kern-.5zw―}

%写真のキャプションに「図」を入れない
\renewcommand{\figurename}{}

\jlreqsetup{
 caption_label_format={図\tatechuyoko{#1}},
}

\ModifyHeading{chapter}{pagebreak=nariyuki}

% 先頭ページ番号

\setcounter{page}{2}


\begin{document}
 \chapter*{第一章}
 \section*{第一節}
 数字は2020年のように横を向いてしまうので、二〇二〇年とするか、
 あるいは\tatechuyoko{20}年のように縦中横を使うといい。
 
 図\tatechuyoko{\ref{zu1}}はいらすとやから拾ってきた。
 
 \
 
 \begin{quote}
  滲み出す混濁の紋章
  
  不遜なる狂気の器
  
  湧き上がり・否定し・痺れ・瞬き
  
  眠りを妨げる
  
  爬行する鉄の王女
  
  絶えず自壊する泥の人形
  
  結合せよ 反発せよ
  
  地に満ち 己の無力を知れ
  
  破道の九十 「黒棺」
 \end{quote}
 

 \begin{figure}[btp]
  \centering
  \includegraphics[angle=90,keepaspectratio,scale=0.2]{cooking_frypan_teflon.png}
  \caption{料理をしてるひと}
  \label{zu1}
 \end{figure}

\end{document}

これを貼り付け、F5を押すか赤く囲った部分をクリックすると、PDFが作成される。






参考