総走行距離、約15,000キロ
- エンジンオイル交換
- プラグ交換
- バッテリー交換(予定。ネットで注文済み)
オイル交換、何キロでしたかな?とすぐに忘れるので、本当に備忘録w。
総走行距離、約15,000キロ
オイル交換、何キロでしたかな?とすぐに忘れるので、本当に備忘録w。
ツイッター(twicli)などで日本語を含むURLを貼り付けると、日本語部分がURLとして解釈(?)されず、正しくリンクされないので、その対処方法。
僕が使っているVivaldiブラウザの場合、
これだけなのだが、よく忘れるので、ここにメモっておく。
追記:Vivaldiブラウザに自動でURLをエンコードしてくれる機能がついたので、設定でチェックを入れればOKになった! (@shun__kawamura さんのツイート参照。)
※「下準備多すぎ!普通にLaTeXだけで書きたい!」という、もっともな意見の方はこちらをどうぞw。
最終更新:2018年2月20日
注意事項:Pandocのバージョンによってはうまく動作しない場合がありますので、あしからず。現在はPandoc 2.1.1 にて動作確認。
前回の投稿 Pandoc + LaTeX で markdownからB6縦書き・小説本のPDFを作成 の後に、同人小説はA5の2段組で作ることが多いと目にしたので、A5の2段組バージョン。
手順は一緒だけど、設定ファイル等をファイル名をはじめ、少しずついじっているので、B6バージョンの設定ファイルは使えない。
また、画像に関しても、B6バージョンでは横向きの画像の書き方が特殊だったが、A5の2段組は逆に縦向きの画像が書き方が特殊になっているので、これも注意。
markdown記法(markdownで表現できないところは結局、TeX記法になってしまうが)で原稿を書いて、コマンド(Windowsならファイルのドラッグ・アンド・ドロップ)で、A5・縦書・2段組の小説本やエッセイ本PDF作成ができる。
任意のフォルダ内が以下のような構成になるようにする。
任意のフォルダ
┃
┣ 原稿.md (原稿ファイル)
┣ 001.jpg (原稿に挿入する画像)
┣ 002.jpg
┣ 003.jpg
┣ Base-A5-two.tex (LaTeXテンプレート)
┣ A5tate-twocolumn.sty (設定スタイルファイル)
┣ zrjapunct1.sty (3点リーダーなどを正しく表示するためのスタイルファイル)
┣ makepdfA5.sh (Linuxのみ。スクリプトファイル)
┣ makepdfA5.bat (Winのみ。バッチファイル)
┣ nkf.exe (Winのみ。nkfコマンドプログラム)
Windows(以下、Win)の人は、ファイルの拡張子が表示されるようにしておく。
ファイル名を「makepdf.bat」や「原稿.md」にしないといけないところを、気づかずに「makepdf.bat.txt」や「原稿.md.txt」になってしまって、うまく実行されなくなってしまうのを防ぐために必要。
「There is a package installer at pandoc’s download page.」のリンク先の下の方にあるインストーラーをダウンロードして、インストール。
Pandocで変換して生成されたTeXファイルのコードの文字列をsedを使って置換して、画像を正しい向きに調整するためなどに必要。
「Download」の項目の「Complete package, except sources Setup」をクリックして、インストーラーをダウンロードして、インストール。
Windows用のsedが、対象ファイルがutf-8のままだと動いてくれないので、文字コードを変換してsedを実行するために必要。
「nkfwin.zip」をダウンロードして、展開。
「vc2005\win32(98,Me,NT,2000,XP,Vista,7)Windows-31J」フォルダの中にある「nkf32.exe」という実行ファイルを取り出し、「原稿.md」などを入れるフォルダにコピーして、「nkf.exe」という名前に変更する。名前を変更するのを忘れないように!
よくPATH(パス)を通してくださいっていう情報があるけど、作業をする同じフォルダ内に入れておけばいいので、別にパスは通さなくていい。
リンク先を参照のこと。Windowsだとインストールに2時間近くかかる…。
設定ファイルを自分で作るのが面倒くさい人は、
A5-tate-two(20180220アップロード用).zip
を、ダウンロードして展開してください。
ただし、すべての設定ファイルが入っているわけではないので注意。
展開したフォルダ内(原稿.mdなどの入っているフォルダ内)に以下のファイルを入れること。
正体不明なzipファイルはウイルス等の危険性があって怖いという人は、以下のように一つずつファイルを作っていく。
テキストエディタ(メモ帳など)で、下記の3つの設定等ファイルを新規作成。ファイルの内容はそれぞれ後述の内容をコピペするだけ。
ただし、Winは文字コードに注意すること。
メモ帳で作成・保存(「名前を付けて保存」)するときには、バッチファイルのmakepdf.bat以外は、以下の設定にすることに注意。
もし、ファイル名に「.txt」がついたら、それを消すこと。例えば、「A5tate-twocolumn.sty.txt」となってしまったら、「A5tate-twocolumn.sty」にする。ファイル名の「.txt」を消すときに、もしかしたら警告が出るけど、気にしなくていい。
LaTeXのA5縦書2段組のために調整した設定スタイルファイル。
% zrjapunct1.sty 3点リーダーなどの調整
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{otf}% <?>で自動空白挿入
\usepackage[prefercjkvar]{pxcjkcat}
\usepackage{zrjapunct1}
\cjkcategory{latn1}{noncjk}% <é>は欧文
%段と段の間隔を10mm
\setlength{\columnsep}{10mm}
% 欧文フォント
%\usepackage{newtxtext,newtxmath}
\usepackage{lmodern}
%ルビ 例 \ruby{山﨑}{やま|さき}
\usepackage{pxrubrica}
%1行目を1文字目インデント
\usepackage{indentfirst}
%一部横書きなど
\usepackage{plext}
%BMP外の文字を使う
\usepackage{otf}
%リンク
\usepackage[hidelinks]{hyperref}
% 原稿ページ設定
\paperwidth 148mm
\paperheight 210mm
\topmargin -17mm
\headheight 3mm
\headsep 5mm
\oddsidemargin -8.9mm
\evensidemargin -8.9mm
\textwidth 175mm %縦書なので、これがテキストの「高さ」
\textheight 115mm %縦書なので、これがテキストの「幅」
\footskip 9mm
\renewcommand{\baselinestretch}{1} %行間
\pagestyle{bothstyle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{bounddvi} %%トンボ付ける際に必要
%タイトルページ出力
\usepackage{titlesec}
%タイトルページの再定義
\makeatletter
\if@titlepage
\renewcommand{\maketitle}{\begin{titlepage}%
\let\footnotesize\small
\let\footnoterule\relax
\let\thanks\p@thanks
\let\footnote\thanks
\vbox to\textheight\bgroup\tate\hsize\textwidth
\null\vfil
\vskip 80\p@ %右余白
\begin{center}%
{\LARGE \@title}\hspace{4em}{\kanjiskip=.1zw plus.5pt minus.5pt \large \@author \par}%
\end{center}\par
\vfil{\centering\@thanks}\vfil\null
\egroup
\end{titlepage}%
}%
\makeatother
%ヘッダー、フッター調整。文字を小さく(\footnotesize)。
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[ol]{\footnotesize\leftmark} %奇数ページ左上に「偶数ページ用の柱=章」
\fancyhead[er]{\footnotesize\rightmark} %偶数ページ右上に「奇数ページ用の柱=節」
\fancyfoot[ol]{\footnotesize\thepage} %奇数ページ右上にページ番号
\fancyfoot[er]{\footnotesize\thepage} %偶数ページに右下にページ番号
\renewcommand{\headrulewidth}{0pt} %ヘッダーの下線の太さ
\renewcommand{\footrulewidth}{0pt} %フッターの下線の太さ
%1頁目を空白ページにしない。\白紙ページにfootnombreスタイルを適用
\makeatletter
\def\cleardoublepage{\clearpage
\if@twoside
\ifodd\c@page\else
\hbox{}\thispagestyle{footnombre}\newpage
\if@twocolumn\hbox{}\newpage\fi
\fi\fi}
\makeatother
%footnombre 白紙ページ、各章の最初のページのノンブルを小さく
\makeatletter
\def\ps@footnombre{\let\@mkboth\@gobbletwo
\let\ps@jpl@in\ps@footnombre
\def\@evenfoot{\hfil\footnotesize\thepage}%\footnotesizeで小さく
\def\@oddfoot{\footnotesize\thepage\hfil}%\footnotesizeで小さく
\let\@oddhead\@empty\let\@evenhead\@empty}
\let\ps@jpl@in\ps@footnombre
\makeatother
%%以下、目次のページ設定%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%目次ページのヘッダーを削除。
\makeatletter
\renewcommand{\tableofcontents}{%
\if@twocolumn\@restonecoltrue\onecolumn
\else\@restonecolfalse\fi
\chapter*{\contentsname
\@mkboth{}{}
%\@mkboth{\contentsname}{\contentsname}
}\@starttoc{toc}%
\if@restonecol\twocolumn\fi
}
\makeatother
% hyperref.styの関係で、目次ページ番号が寝てしまうので、正しく縦向きに。 参考:http://id.fnshr.info/2017/05/20/my-latex-templates-201705/
\makeatletter
\def\contentsline#1#2#3#4{\csname l@#1\endcsname{\hyper@linkstart{link}{#4}{#2}\hyper@linkend}{\rensuji{#3}}}
\makeatother
%目次の節以下の点線を3点リーダーに。節(section)以降のページ下余白調整
\makeatletter
\def\@dottedtocline#1#2#3#4#5{%
\vskip\toclineskip \@plus.2\p@%
{%\leftskip #2\relax \rightskip \@tocrmarg
%\parfillskip -\rightskip
\setlength{\parfillskip}{5em}%節(section)以降の下余白
\parindent #2\relax\@afterindenttrue
\interlinepenalty\@M
\leavevmode
\@lnumwidth #3\relax
\advance\leftskip \@lnumwidth \hbox{}\hskip -\leftskip
{#4}\nobreak
\leaders\hbox to 0.33333zw{\hfil\raise.30zw\hbox{.}\hfil}%
\hfill \nobreak\hbox to\@pnumwidth{%
\hss\reset@font\rmfamily\small \normalcolor #5}\par}}
\makeatother
%目次の章(chapter)の設定
\makeatletter
\renewcommand*{\l@chapter}[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\addvspace{1.0em \@plus\p@}%目次の行間
\begingroup
%\parindent\z@ \rightskip\@pnumwidth \parfillskip-\rightskip
\setlength{\parindent}{3em}%インデント(上部余白)
\setlength{\parfillskip}{5em}%下余白
\leavevmode\bfseries
\setlength\@lnumwidth{2zw}%数字と目次本文との間
\advance\leftskip\@lnumwidth \hskip-\leftskip
#1\nobreak\hfil\nobreak\hb@xt@\@pnumwidth{\hss#2}\par
\penalty\@highpenalty
\endgroup
\fi}
\makeatother
%目次の節(section)の設定。
%\renewcommand*{\l@区分}{\@dottedtocline{レベル}{インデント量}{ラベル幅(数字+余白)}}
\makeatletter
\renewcommand*{\l@section}{\@dottedtocline{1}{4zw}{2zw}}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%脚注のインデント調整
\renewcommand\thefootnote{\rensuji{\arabic{footnote}}}
\makeatletter
\long\def\@makefntext#1{\parindent 1em\noindent
\@hangfrom{\hbox to 1.8em{\hss{\@makefnmark}}}#1}
\makeatother
%見出しの数字を変更
\renewcommand{\thechapter}{\rensuji{\arabic{chapter}}} %%章レベルをアラビア数字に
%\renewcommand{\thechapter}{第\rensuji{\arabic{chapter}}章} %% 第1章
%\renewcommand{\thechapter}{\Kanji{chapter}} %% 章レベルを漢数字に
%\renewcommand{\thechapter}{第\Kanji{chapter}章} %% 第一章
%\renewcommand{\thesection}{\rensuji{\arabic{section}}} %% 節レベルをアラビア数字に
\renewcommand{\thesection}{\Kanji{section}} %% 節レベルを漢数字に
% 見出しの調整 \vspace{見出しの前の余白}、\fontsize{フォントサイズ}{2行以上になったときの行間}
\titleformat{\chapter}
{\vspace{-7.2mm}\normalfont\fontsize{12}{16}\bfseries}{\thechapter}{1em}{}
\titleformat{\section}
{\vspace{-3mm}\normalfont\fontsize{10}{15}\bfseries}{\thesection}{1em}{}
%目次に「第」や「章」をつけない
\renewcommand{\prepartname}{}
\renewcommand{\postpartname}{}
\renewcommand{\prechaptername}{}%章レベルの前
\renewcommand{\postchaptername}{}%章レベルの後
%写真のキャプションに「図」を入れない
\renewcommand{\figurename}{}
%画像まわり再定義
\makeatletter
\renewcommand{\thefigure}{%
%\ifnum\c@chapter>\z@\thechapter{}・\fi\rensuji{\@arabic\c@figure} %%画像のキャプションに余計な文字や数字を入れない
}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename\thefigure}
\makeatother
%キャプションまわりの余白を再定義
% [Tex tips](http://osksn2.hep.sci.osaka-u.ac.jp/~naga/miscellaneous/tex/tex-tips2.html)を参照のこと
\abovecaptionskip=-8pt
\makeatletter
\setlength\belowcaptionskip{0\p@}
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
\iftdir\sbox\@tempboxa{#1\hskip1zw#2}%
\else\sbox\@tempboxa{#1 #2}%
\fi
\ifdim \wd\@tempboxa >\hsize
\iftdir #1\hskip1zw#2\relax\par
\else #1 #2\relax\par\fi
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip
}
\makeatother
Pandocが下記テンプレートファイルの $body$ に、原稿.mdを放り込んで変換してくれる、そのためのテンプレートファイル。
トンボをつけたり、本文のフォントサイズを変えたり、印刷所名を変えたりときに少しいじる程度。トンボを付けたPDFを出力したいときは1行目の先頭に「%」をつけてコメントアウトして、2行目の先頭の「%」をはずす。
% upLaTeX文書; 文字コードはUTF-8
\documentclass[uplatex,twocolumn,dvipdfmx]{utbook} %トンボなし。
%\documentclass[uplatex,tombow,twocolumn,dvipdfmx]{utbook} %トンボあり。
\usepackage{A5tate-twocolumn}
\title{$title$}
\author{$author$}
\date{$date$}
\begin{document}
\maketitle
\tableofcontents
$body$
%奥付け
\clearpage
\thispagestyle{empty}
\begin{minipage}<y>[htpb]{11.5cm}
\begin{center}
\vspace{115mm} %奥付のページ上部からの位置
\begin{tabular}{l}
\multicolumn{1}{c}{\Large{$title$}}\\[3mm] %%タイトル
\hline
%% row 1
\\[-3mm]
\hspace{2mm}\large{著者}\hspace{6mm}$author$\\[0mm]
\hspace{2mm}\small{発行日\hspace{5mm}$date$ }\\[0mm]
\hspace{2mm}\scriptsize{印刷・製本}\hspace{2mm}{\scriptsize 桜島出版}\\[-3mm]
\\\hline
\end{tabular}
\end{center}
\end{minipage}
\end{document}
バッチファイル。文字コードはshift_jis(932)=ANSIで保存。
pandoc %~n1.md --template Base-A5-two.tex --top-level-division=chapter -o %~n1.tex
nkf -s --overwrite %~n1.tex
sed -e "s/begin{figure}/begin{figure}\n\\begin{center}\n\\begin{minipage}<y>\[htbp\]{11.5cm}/g" -e "s/end{figure}/end{minipage}\n\\end{center}\n\\end{figure}/g" -e "s/!縦/\\onecolumn\\begin{figure}\\begin{center}\\begin{minipage}<y>\[htbp\]{11.5cm}\\centering/g" -e "s/縦!/\\end{minipage}\\end{center}\\end{figure}\\twocolumn/g" -e "s/\\ldots{}/…/g" -e "s/\\ldots/…/g" -e "s/,height=\\textheight//g" %~n1.tex > %date:~0,4%%date:~5,2%%date:~8,2%-%~n1.tex
nkf -w --overwrite %date:~0,4%%date:~5,2%%date:~8,2%-%~n1.tex
uplatex %date:~0,4%%date:~5,2%%date:~8,2%-%~n1
dvipdfmx %date:~0,4%%date:~5,2%%date:~8,2%-%~n1
del %~n1.tex
内容としては、
というコマンドを並べているだけ。
Pandocの変換方法が変わって、sedによる置換がうまくいかなくなるかもしれないので、あしからず…。
シェルスクリプトファイル。基本、上と同じことをやっている。まぁ、こっちが先にできたんだけど…。
上記と一緒で、Pandocの変換方法が変わって、sedによる置換がうまくいかなくなるかもしれないので、あしからず…。
#!/bin/sh
pandoc $1.md --template Base-A5-two.tex --top-level-division=chapter -o $1.tex
#写真の調整
sed -e 's/begin{figure}/begin{figure}\n\\begin{center}\n\\begin{minipage}<y>\[htbp\]{11.5cm}/g' -e 's/end{figure}/end{minipage}\n\\end{center}\n\\end{figure}/g' $1.tex > `date +%Y%m%d-$1`.tex
sed -i -e 's/,height=\\textheight//g' `date +%Y%m%d-$1`.tex
#横サイズ写真2枚を1ページに収める調整
sed -i -e 's/!縦/\\onecolumn\\begin{figure}\\begin{center}\\begin{minipage}<y>\[htbp\]{11.5cm}\\centering/g' -e 's/縦!/\\end{minipage}\\end{center}\\end{figure}\\twocolumn/g' `date +%Y%m%d-$1`.tex
#3点リーダー(…)をpandocが\ldots変換したのを、もう一度…に戻す
sed -i -e 's/\\ldots{}/…/g' `date +%Y%m%d-$1`.tex
sed -i -e 's/\\ldots/…/g' `date +%Y%m%d-$1`.tex
uplatex `date +%Y%m%d-$1`
dvipdfmx `date +%Y%m%d-$1`
rm -f $1.tex
前述したように、以下をダウンロードして、フォルダ内に入れる。
原則、markdown(pandoc拡張のmarkdown)記法で書くが、markdownにないものは、TeX記法で書く。
以下、簡単なテンプレート。ガシガシ書いていく。
%タイトル
%著者
%2017年1月1日
<!-- 書き方メモ
- 強調 *強調したい文字*
- ルビ \ruby{山﨑}{やま|さき}
ルビの書き方は、オプションをつけたりしないと上手くいかないこともあるので、注意。詳しくは pxrubrica パッケージ(pxrubrica.sty)について調べること。
- 傍点 \bou{傍点をつけたい語句}
- 縦中横の数字 \rensuji{10}
- 横向きの画像
![キャプション](001.jpg){width=11cm}
- 縦向きの画像
!縦![](002.jpg){width=11cm}\caption{キャプション}縦!
-->
# 章レベルの見出し
あとは本文をガシガシ書いていく。
横向きの画像は、markdown(Pandoc拡張markdown)記法で以下のように書く。{width=11cm}というのはPandocの拡張。
![キャプション](001.jpg){width=11cm}
# 章レベルの見出し
## 節レベルの見出し
本文をガシガシ書いていく。
1ページに横向きの写真を上下に2枚入れるときは、1行空けて書く。ただし、前後の文章の関係で、必ずしも1ページに収まるとは限らない…。そのときは画像を入れる場所を試行錯誤してみてください。
![キャプション](001.jpg){width=11cm}
![キャプション](002.jpg){width=11cm}
縦向きの画像は下記のように書く。sedで置換するために、かなり特殊な書き方になっている。上記の書き方メモからコピペしてきて。
!縦![](002.jpg){width=11cm}\caption{キャプション}縦!
# あとがき{-}
あとがきを書いていく。見出しに章番号をつけたくない場合は、見出しの後ろに{-}をつける。
原稿作成時のポイント
*強調したい文字*
\ruby{山﨑}{やま|さき}
\bou{傍点をつけたい語句}
縦中横の数字 \rensuji{10}
※ 画像について
横向きの画像の場合は、普通のmarkdown(Pandoc拡張markdown)記法で下記のように。横幅はご自由に調節を。11cmぐらいが左右のバランスが取れる最大の幅かな…。
![キャプション](001.jpg) {width=11cm}
横向き写真を1ページに上下2枚並べるときは、単純に1行空けて書く。ただし、前後の文章の関係で、必ずしも1ページに収まるとは限らない…。そのときは画像を入れる場所を試行錯誤してみてください。
![キャプション](001.jpg) {width=11cm}
![キャプション](002.jpg) {width=11cm}
縦向きの画像は、下記のように書き方がかなり特殊になる。これはsedで置換して調整するため。前後に「!縦」と「縦!」で挟んで、キャプションの付け方にも注意。「書き方メモ」からコピペして使ってください。
!縦![](002.jpg){width=11cm}\caption{キャプション}縦!
原稿.md をバッチファイルの makepdfA5.bat の上に2回重ねる(ドラッグ&ドロップ)。2回繰り返すのは目次生成のため。
または、
原稿.mdなどの入っているフォルダのアドレス欄のところに cmd と入力して、コマンドプロンプトを起動、
makepdfA5 原稿
と入力して、実行。この場合も、目次生成のために2回実行する。
B6バージョンとはコマンドが違うので注意。
そうすると、<日付>-原稿.pdf などが生成される(他にもいくつかファイルが作られるが気にしなくていい)。
環境にもよるだろうが、完成したpdfファイルを開いたまま、もう一度、上記作業を実行するとpdf生成に失敗することがあるので、一度pdfビューア(Adobe readerなど)を閉じてから実行すること。
Ubuntuであれば、原稿.mdの入っているフォルダで 右クリック > 端末の中に開く で端末を起動させて、
$ sh makepdfA5.sh 原稿
を、やはり目次生成のために、2回実行。
B6バージョンとはコマンドが違うので注意。
上の段と下の段の文字列がずれないようにする微調整が必要だった。
それでも、節(\section)が入るページはどうしても上下の文章の列がズレてしまう…。
※「下準備が多すぎる! LaTeXだけでやりたい!」というまっとうなご意見 (^_^;) の方はこちらへどうぞ。
最終更新:2018年2月20日
注意事項:Pandocのバージョンによってはうまく動作しない場合がありますので、あしからず。現在はPandoc 2.1.1 にて動作確認。
markdown記法(markdownで表現できないところは結局、TeX記法になってしまうが)で原稿を書いて、コマンド(Windowsならファイルのドラッグ・アンド・ドロップ)で、B6縦書の小説本やエッセイ本PDF作成ができる。
任意のフォルダ内が以下のような構成になるように準備していく。
任意のフォルダ
┃
┣ 原稿.md (原稿ファイル)
┣ 001.jpg (原稿に挿入する画像)
┣ 002.jpg
┣ 003.jpg
┣ Base-B6tate.tex (LaTeXテンプレート)
┣ B6tate.sty (設定スタイルファイル)
┣ zrjapunct1.sty (3点リーダーなどを正しく表示するためのスタイルファイル)
┣ makepdfB6.sh (Linuxのみ。スクリプトファイル)
┣ makepdfB6.bat (Winのみ。バッチファイル)
┣ nkf.exe (Winのみ。nkfコマンドプログラム)
Windows(以下、Win)の人は、ファイルの拡張子が表示されるようにしておく。
ファイル名を「makepdfB6.bat」や「原稿.md」にしないといけないところを、気づかずに「makepdfB6.bat.txt」や「原稿.md.txt」になってしまって、うまく実行されなくなってしまうのを防ぐために必要。
「There is a package installer at pandoc’s download page.」のリンク先の下の方にあるインストーラーをダウンロードして、インストール。
Pandocで変換して生成されたTeXファイルのコードの文字列をsedを使って置換して、画像を正しい向きに調整するためなどに必要。
「Download」の項目の「Complete package, except sources Setup」をクリックして、インストーラーをダウンロードして、インストール。
Windows用のsedが、対象ファイルがutf-8のままだと動いてくれないので、文字コードを変換してsedを実行するために必要。
「nkfwin.zip」をダウンロードして、展開。
「vc2005\win32(98,Me,NT,2000,XP,Vista,7)Windows-31J」フォルダの中にある「nkf32.exe」という実行ファイルを取り出し、「原稿.md」などを入れるフォルダにコピーして、「nkf.exe」という名前に変更する。名前を変更するのを忘れないように!
よくPATH(パス)を通してくださいっていう情報があるけど、作業をする同じフォルダ内に入れておけばいいので、別にパスは通さなくていい。
リンク先を参照のこと。Windowsだとインストールに2時間近くかかる…。
設定ファイルを自分で作るのが面倒くさい人は、
を、ダウンロードして展開してください。
ただし、すべての設定ファイルが入っているわけではないので注意。
展開したフォルダ内(原稿.mdなどの入っているフォルダ内)に以下のファイルを入れること。
正体不明なzipファイルはウイルス等の危険性があって怖いという人は、以下のように一つずつファイルを作っていく。
テキストエディタ(メモ帳など)で、下記の3つの設定等ファイルを新規作成。ファイルの内容はそれぞれ後述の内容をコピペするだけ。
ただし、Winは文字コードに注意すること。
メモ帳で作成・保存(「名前を付けて保存」)するときには、バッチファイルのmakepdfB6.bat以外は、以下の設定にすることに注意。
もし、ファイル名に「.txt」がついたら、それを消すこと。例えば、「B6tate.sty.txt」となってしまったら、「B6tate.sty」にする。ファイル名の「.txt」を消すときに、もしかしたら警告が出るけど、気にしなくていい。
% zrjapunct1.sty 3点リーダーなどの調整
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{otf}% <?>で自動空白挿入
\usepackage[prefercjkvar]{pxcjkcat}
\usepackage{zrjapunct1}
\cjkcategory{latn1}{noncjk}% <é>は欧文
% 欧文フォント
%\usepackage{newtxtext,newtxmath}
\usepackage{lmodern}
%ルビ 例 \ruby{山﨑}{やま|さき}
\usepackage{pxrubrica}
%1行目を1文字目インデント
\usepackage{indentfirst}
%一部横書きなど
\usepackage{plext}
%BMP外の文字を使う
\usepackage{otf}
%リンク
\usepackage[hidelinks]{hyperref}
% 原稿ページ設定(B6[JIS規格])
\paperwidth 128mm
\paperheight 182mm
\topmargin -15mm
\headheight 3mm
\headsep 7mm
\oddsidemargin -8.9mm
\evensidemargin -8.9mm
\textwidth 137mm
\textheight 95mm
\footskip 15mm
\renewcommand{\baselinestretch}{1.15}
\pagestyle{bothstyle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{bounddvi} %%トンボ付ける際に必要
% 印刷用紙サイズ
%\special{papersize=182mm,257mm} %%B5に面付け
%\special{papersize=210mm,297mm} %%A4に面付け
%\special{papersize=\the\paperwidth,\the\paperheight} %%上記原稿サイズ(B6[JIS規格])
%タイトルページ出力
\usepackage{titlesec}
%タイトルページの再定義
\makeatletter
\if@titlepage
\renewcommand{\maketitle}{\begin{titlepage}%
\let\footnotesize\small
\let\footnoterule\relax
\let\thanks\p@thanks
\let\footnote\thanks
\vbox to\textheight\bgroup\tate\hsize\textwidth
\null\vfil
\vskip 63\p@
\begin{center}%
{\LARGE \@title}\hspace{4em}{\kanjiskip=.1zw plus.5pt minus.5pt \large \@author \par}%
\end{center}\par
\vfil{\centering\@thanks}\vfil\null
\egroup
\end{titlepage}%
}%
\makeatother
%ヘッダー、フッター調整。文字を小さく(\footnotesize)。
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[ol]{\footnotesize\leftmark} %奇数ページ左上に「偶数ページ用の柱=章」
\fancyhead[er]{\footnotesize\rightmark} %偶数ページ右上に「奇数ページ用の柱=節」
\fancyfoot[ol]{\footnotesize\thepage} %奇数ページ右上にページ番号
\fancyfoot[er]{\footnotesize\thepage} %偶数ページに右下にページ番号
\renewcommand{\headrulewidth}{0pt} %ヘッダーの下線の太さ
\renewcommand{\footrulewidth}{0pt} %フッターの下線の太さ
%1頁目を空白ページにしない。\白紙ページにfootnombreスタイルを適用
\makeatletter
\def\cleardoublepage{\clearpage
\if@twoside
\ifodd\c@page\else
\hbox{}\thispagestyle{footnombre}\newpage
\if@twocolumn\hbox{}\newpage\fi
\fi\fi}
\makeatother
%footnombre 白紙ページ、各章の最初のページのノンブルを小さく
\makeatletter
\def\ps@footnombre{\let\@mkboth\@gobbletwo
\let\ps@jpl@in\ps@footnombre
\def\@evenfoot{\hfil\footnotesize\thepage}%\footnotesizeで小さく
\def\@oddfoot{\footnotesize\thepage\hfil}%\footnotesizeで小さく
\let\@oddhead\@empty\let\@evenhead\@empty}
\let\ps@jpl@in\ps@footnombre
\makeatother
%%以下、目次のページ設定%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%目次ページのヘッダーを削除。
\makeatletter
\renewcommand{\tableofcontents}{%
\if@twocolumn\@restonecoltrue\onecolumn
\else\@restonecolfalse\fi
\chapter*{\contentsname
\@mkboth{}{}
%\@mkboth{\contentsname}{\contentsname}
}\@starttoc{toc}%
\if@restonecol\twocolumn\fi
}
\makeatother
% hyperref.styの関係で、目次ページ番号が寝てしまうので、正しく縦向きに。 参考:http://id.fnshr.info/2017/05/20/my-latex-templates-201705/
\makeatletter
\def\contentsline#1#2#3#4{\csname l@#1\endcsname{\hyper@linkstart{link}{#4}{#2}\hyper@linkend}{\rensuji{#3}}}
\makeatother
%目次の節以下の点線を3点リーダーに。節(section)以降のページ下余白調整
\makeatletter
\def\@dottedtocline#1#2#3#4#5{%
\vskip\toclineskip \@plus.2\p@%
{\leftskip #2\relax \rightskip \@tocrmarg
\parfillskip -\rightskip
%\setlength{\parfillskip}{5em}%節(section)以降の下余白
\parindent #2\relax\@afterindenttrue
\interlinepenalty\@M
\leavevmode
\@lnumwidth #3\relax
\advance\leftskip \@lnumwidth \hbox{}\hskip -\leftskip
{#4}\nobreak
\leaders\hbox to 0.33333zw{\hfil\raise.30zw\hbox{.}\hfil}%
\hfill \nobreak\hbox to\@pnumwidth{%
\hss\reset@font\rmfamily\small \normalcolor #5}\par}}
\makeatother
%目次の章(chapter)の設定
\makeatletter
\renewcommand*{\l@chapter}[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\addvspace{1.0em \@plus\p@}%目次の行間
\begingroup
\parindent\z@ \rightskip\@pnumwidth \parfillskip-\rightskip
%\setlength{\parindent}{3em}%インデント(上部余白)
%\setlength{\parfillskip}{5em}%下余白
\leavevmode\bfseries
\setlength\@lnumwidth{2zw}%数字と目次本文との間
\advance\leftskip\@lnumwidth \hskip-\leftskip
#1\nobreak\hfil\nobreak\hb@xt@\@pnumwidth{\hss#2}\par
\penalty\@highpenalty
\endgroup
\fi}
\makeatother
%目次の節(section)の設定。
%\renewcommand*{\l@区分}{\@dottedtocline{レベル}{インデント量}{ラベル幅(数字+余白)}}
\makeatletter
\renewcommand*{\l@section}{\@dottedtocline{1}{3zw}{2zw}}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%脚注のインデント調整
\renewcommand\thefootnote{\rensuji{\arabic{footnote}}}
\makeatletter
\long\def\@makefntext#1{\parindent 1em\noindent
\@hangfrom{\hbox to 1.8em{\hss{\@makefnmark}}}#1}
\makeatother
%見出しの数字を変更
\renewcommand{\thechapter}{\rensuji{\arabic{chapter}}} %%章レベルをアラビア数字に
%\renewcommand{\thechapter}{第\rensuji{\arabic{chapter}}章} %% 第1章
%\renewcommand{\thechapter}{\Kanji{chapter}} %% 章レベルを漢数字に
%\renewcommand{\thechapter}{第\Kanji{chapter}章} %% 第一章
%\renewcommand{\thesection}{\rensuji{\arabic{section}}} %% 節レベルをアラビア数字に
\renewcommand{\thesection}{\Kanji{section}} %% 節レベルを漢数字に
%見出しの調整 \vspace{見出しの前の余白}、\fontsize{フォントサイズ}{2行以上になったときの行間}
\titleformat{\chapter}
{\vspace{-15mm}\normalfont\fontsize{12}{15}\bfseries}{\thechapter}{1em}{}
\titleformat{\section}
{\normalfont\fontsize{10}{15}\bfseries}{\thesection}{1em}{}
%目次に「第」や「章」をつけない
\renewcommand{\prepartname}{}
\renewcommand{\postpartname}{}
\renewcommand{\prechaptername}{}%章レベルの前
\renewcommand{\postchaptername}{}%章レベルの後
%写真のキャプションに「図」を入れない
\renewcommand{\figurename}{}
%画像まわり再定義
\makeatletter
\renewcommand{\thefigure}{%
%\ifnum\c@chapter>\z@\thechapter{}・\fi\rensuji{\@arabic\c@figure} %%画像のキャプションに余計な文字や数字を入れない
}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename\thefigure}
\makeatother
%キャプションまわりの余白を再定義
% [Tex tips](http://osksn2.hep.sci.osaka-u.ac.jp/~naga/miscellaneous/tex/tex-tips2.html)を参照のこと
\abovecaptionskip=-10pt
\makeatletter
\setlength\belowcaptionskip{0\p@}
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
\iftdir\sbox\@tempboxa{#1\hskip1zw#2}%
\else\sbox\@tempboxa{#1 #2}%
\fi
\ifdim \wd\@tempboxa >\hsize
\iftdir #1\hskip1zw#2\relax\par
\else #1 #2\relax\par\fi
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip
}
\makeatother
Pandocが下記テンプレートファイルの $body$ に、原稿.mdを放り込んで変換してくれる、そのためのテンプレートファイル。
トンボをつけたり、本文のフォントサイズを変えたり、印刷所名を変えたりときに少しいじる程度。トンボを付けたPDFを出力したいときは1行目の先頭に「%」をつけてコメントアウトして、2行目の先頭の「%」をはずす。
\documentclass[uplatex,dvipdfmx]{utbook} %トンボなし。
%\documentclass[uplatex,tombow,dvipdfmx]{utbook} %トンボあり。
\usepackage{B6tate}
\title{$title$}
\author{$author$}
\date{$date$}
\begin{document}
\maketitle{}
\tableofcontents
$body$
%奥付け
\clearpage
\thispagestyle{empty}
\begin{minipage}<y>[htpb]{9cm}
\begin{center}
\vspace{90mm}
\begin{tabular}{l}
\multicolumn{1}{c}{\Large{$title$}}\\[3mm] %%タイトル
\hline
%% row 1
\\[-3mm]
\hspace{2mm}\large{著者}\hspace{6mm}$author$\\[0mm]
\hspace{2mm}\small{発行日\hspace{5mm}$date$ }\\[0mm]
\hspace{2mm}\scriptsize{印刷・製本}\hspace{2mm}{\scriptsize 桜島出版}\\[-3mm]
\\\hline
\end{tabular}
\end{center}
\end{minipage}
\end{document}
バッチファイル。文字コードはshift_jis(932)=ANSIで保存。
pandoc %~n1.md --template Base-B6tate.tex --top-level-division=chapter -o %~n1.tex
nkf -s --overwrite %~n1.tex
sed -e "s/begin{figure}/begin{figure}\n\\begin{center}\n\\begin{minipage}<y>\[htbp\]{9.7cm}/g" -e "s/end{figure}/end{minipage}\n\\end{center}\n\\end{figure}/g" -e "s/caption\\{/\\caption{/g" -e "s/上\\includegraphics/\\begin{figure}\[htbp\]\n\\begin{center}\n\\begin{minipage}<y>\[htbp\]{9.7cm}\n\\centering\n\\includegraphics/g" -e "s/_下}/}\n\\end{minipage}\n\\end{center}\n\\end{figure}/g" -e "s/\\ldots{}/…/g" -e "s/\\ldots/…/g" -e "s/,height=\\textheight//g" %~n1.tex > %date:~0,4%%date:~5,2%%date:~8,2%-%~n1.tex
nkf -w --overwrite %date:~0,4%%date:~5,2%%date:~8,2%-%~n1.tex
uplatex %date:~0,4%%date:~5,2%%date:~8,2%-%~n1
dvipdfmx %date:~0,4%%date:~5,2%%date:~8,2%-%~n1
del %~n1.tex
内容としては、
というコマンドを並べているだけ。
Pandocの変換方法が変わって、sedによる置換がうまくいかなくなるかもしれないので、あしからず…。
シェルスクリプトファイル。基本、上と同じことをやっている。まぁ、こっちが先にできたんだけど…。
#!/bin/sh
pandoc $1.md --template Base-B6tate.tex --top-level-division=chapter -o $1.tex
#写真の調整
sed -e 's/begin{figure}/begin{figure}\n\\begin{center}\n\\begin{minipage}<y>\[htbp\]{9.7cm}/g' -e 's/end{figure}/end{minipage}\n\\end{center}\n\\end{figure}/g' $1.tex > `date +%Y%m%d-$1`.tex
sed -i -e 's/,height=\\textheight//g' `date +%Y%m%d-$1`.tex
#横サイズ写真2枚を1ページに収める調整
sed -i -e 's/caption\\{/\\caption{/g' -e 's/上\\includegraphics/\\begin{figure}\[htbp\]\n\\begin{center}\n\\begin{minipage}<y>\[htbp\]{9.7cm}\n\\centering\n\\includegraphics/g' -e 's/_下}/}\n\\end{minipage}\n\\end{center}\n\\end{figure}/g' `date +%Y%m%d-$1`.tex
#3点リーダー(…)をpandocが\ldots変換したのを、もう一度…に戻す
sed -i -e 's/\\ldots{}/…/g' `date +%Y%m%d-$1`.tex
sed -i -e 's/\\ldots/…/g' `date +%Y%m%d-$1`.tex
uplatex `date +%Y%m%d-$1`
dvipdfmx `date +%Y%m%d-$1`
rm -f $1.tex
上記と一緒で、Pandocの変換方法が変わって、sedによる置換がうまくいかなくなるかもしれないので、あしからず…。
前述したように、以下をダウンロードして、フォルダ内に入れる。
原則、markdown(pandoc拡張のmarkdown)記法で書くが、markdownにないものは、TeX記法で書く。
以下、簡単なテンプレート。ガシガシ書いていく。
%タイトル
%著者
%2017年1月1日
<!-- 書き方メモ
- 強調 *強調したい文字*
- ルビ \ruby{山﨑}{やま|さき}
ルビの書き方は、オプションをつけたりしないと上手くいかないこともあるので、注意。詳しくは pxrubrica パッケージ(pxrubrica.sty)について調べること。
- 傍点 \bou{傍点をつけたい語句}
- 縦中横の数字 \rensuji{10}
- 1ページに1枚の画像。
![キャプション](001.jpg){width=9.2cm}
- 横向き写真を、1ページに上下2枚並べる。
- 横向き写真を、1ページに上下2枚並べる。
上![](002.jpg){width=9.2cm}\caption{キャプション} ※前に「上」
![](003.jpg){width=9.2cm}\caption{キャプション_下} ※キャプションの最後に「_下」
-->
# 章レベルの見出し
あとは本文をガシガシ書いていく。画像は以下のように書く。{width=9.2cm}というのはPandocの拡張だが、一般的な書き方に沿っている。
![キャプション](001.jpg) {width=9.2cm}
# 章レベルの見出し
## 節レベルの見出し
本文をガシガシ書いていく。
1ページに横向きの写真を上下に2枚入れるときは、下記のように書く。sedで置換するために、かなり特殊な書き方になっている。上記の書き方メモからコピペしてきて。
上![](002.jpg){width=9.2cm}\caption{キャプション}
![](003.jpg){width=9.2cm}\caption{キャプション_下}
# あとがき{-}
あとがきを書いていく。見出しに章番号をつけたくない場合は、見出しの後ろに{-}をつける。
原稿作成時のポイント
*強調したい文字*
\ruby{山﨑}{やま|さき}
\bou{傍点をつけたい語句}
縦中横の数字 \rensuji{10}
※ 画像について
1ページに1枚の画像の場合は下記のように。横幅はご自由に調節を。9.2cmぐらいが左右のバランスが取れる最大の幅かな…。
![キャプション](001.jpg) {width=9.2cm}
横向き写真を1ページに上下2枚並べるときは、下記のように書き方がかなり特殊になる。これはsedで置換して調整するため。1枚目の前に「上」、2枚目の後ろに「下」を置き、キャプションの付け方にも注意。
上![](002.jpg){width=9.2cm}\caption{キャプションはここに書く}
![](002.jpg){width=9.2cm}\caption{キャプションはここに書く_下}
原稿.md をバッチファイルの makepdfB6.bat の上に2回重ねる(ドラッグ&ドロップ)。2回繰り返すのは目次生成のため。
または、
原稿.mdなどの入っているフォルダのアドレス欄のところに cmd と入力して、コマンドプロンプトを起動、
makepdfB6 原稿
と入力して、実行。この場合も、目次生成のために2回実行する。
そうすると、<日付>-原稿.pdf などが生成される(他にもいくつかファイルが作られるが気にしなくていい)。
環境にもよるだろうが、完成したpdfファイルを開いたまま、もう一度、上記作業を実行するとpdf生成に失敗することがあるので、一度pdfビューア(Adobe readerなど)を閉じてから実行すること。
Ubuntuであれば、原稿.mdの入っているフォルダで 右クリック > 端末の中に開く で端末を起動させて、
sh makepdfB6.sh 原稿
を、やはり目次生成のために、2回実行。
TeX使いの人からすれば、最初からTeXで書けばいいじゃん…となるのだろうが、普段からmarkdownで書いていて、内容ファイルはできるだけシンプルに!装飾はcssで!(md→pandoc→html/css)というのに慣れている身としては、原稿ファイルに画像挿入などのTeXコード(しかも今回は画像を回転させるためにさらに複雑になる)があるのを見るだけで、ウンザリしてしまうし、かつ、Pandocによるmarkdown変換の方に慣れているので、これでいいのだ…w。
教育関係者なら、1問1答の小テストプリントを作成することは多いと思う。
それを簡単に作る方法。
概要としては、テキストエディタ(markdown記法)で問題を作成し、Pandocでhtmlに変換(さらにPDFにしてもいい)、印刷という手順。
Pandocのリスト番号付与機能や脚注機能を利用したこの作成方法のメリットは、以下の通り。
Pandocは、markdown記法で書いたファイルをhtmlなどの様々なファイルに変換するためのソフト。英語だけど、Installingのリンク先をクリックしていけば、大体分かるはず。Windowsユーザーは「pandoc-1.〜 -windows.msi」をダウンロードして、インストール。
wkhtmltopdfは、下記、下準備3のスクリプトファイルによるpdf作成をするのであれば必要。
任意のフォルダ内に、以下の内容の「smalltest.css」ファイルを作る。
リンク(脚注のリンク)の文字を visibility: hidden; にしているのが肝。
.問題 {
margin-left:0%;
margin-right:30%;
padding-right:10pt;
font-family:"IPAex明朝",serif;
font-size:10pt;
border-width: 1px;
border-color:grey;
border-right-style:dashed;
}
.問題 li{line-height:1.3;
padding-bottom:7pt;}
.footnotes {
padding-top:5%;
margin-left:70%;
page-break-before:always;
font-family:"IPAex明朝",serif;
font-size:11pt;
}
.footnotes li{line-height:1.3;}
h1{font-size:11pt;}
h2{font-size:10pt;}
.s{font-size:8pt;}
a:link { visibility: hidden; }
a:visited { visibility: hidden; }
a:hover { visibility: hidden; }
a:active { visibility: hidden; }
hr { visibility: hidden; }
ruby>rt {
font-size: 50%;
text-align: center;
}
markdown→html→pdf 変換を一発で行うためのスクリプトファイル「maketest.sh」を、上記cssファイルと同じフォルダに用意。
ただし、使えるのはLinuxユーザーのみ。Windowsユーザーはこれは使えない。
Windowsでも似たようなことができるんだろうけど、Ubuntuユーザーの僕は知らないw。
#!/bin/sh
pandoc $1.md -c smalltest.css -s -o $1.html
wkhtmltopdf --disable-smart-shrinking --margin-top 20 --margin-left 15 --margin-right 15 $1.html $1.pdf
markdown→html→pdf 変換を一発で行うためのスクリプトファイル「maketest.bat」を、上記cssファイルと同じフォルダに用意。
pandoc %~n1.md -s -c smalltest.css -t html5 -o %~n1.html
wkhtmltopdf --encoding utf8 --disable-smart-shrinking --margin-top 20 --margin-left 15 --margin-right 15 %~n1.html %~n1.pdf
上記cssファイル・スクリプトファイルと同じフォルダ内に、例えば「小テスト001.md」というファイルを以下のように作る。
「半角数字 + 半角ピリオド + 半角スペース」の後に問題文で、そのすぐ後の ^[ ] の中に解答を書く。
<div class="問題"><!--これは削除しない-->
# 小テスト001
1. 1914(大正3)年の噴火によって、桜島は( )半島と陸続きになった。^[大隅]
2. 2017年1月現在、広告鳥が乗っているバイクは何か。^[YBR125]
4. 125cc未満の、いわゆる原付2種バイクのナンバープレートの色は何色か。^[ピンク色]
5. YBR125はどこのメーカーのバイクか。^[ヤマハ。<br />ただし、製造は日本国内ではなく、中国など。]
6. ^[]
7. ^[]
8. ^[]
9. ^[]
3. 問題番号は自動的に振られるので、問題の入れ替え、差し替えが非常に楽。^[解答番号も問題番号と一緒に変わる。]
10. ^[]
1. 問題番号は半角数字であればいいので、全部「1」とかでも大丈夫。^[解答番号は意識しなくもいい。]
1. ^[]
1. ^[]
</div><!--これは削除しない-->
フォルダ内で端末(ターミナル、WindowsだったらコマンドプロンプトかPowerShell?)を開き、以下を入力してエンターを押すと、同じフォルダ内にhtmlファイルが生成される。
pandoc 小テスト001.md -c smalltest.css -s -o 小テスト001.html
Windowsユーザーのための参照:
htmlファイルをブラウザで開いて、印刷時の余白を適当に設定して(左右の余白は同じ方がいい)、印刷。
印刷時にpdfプリンタ等を選べば、pdfも作成できる。
Linuxユーザーなら、フォルダ内で端末を開いて、以下で下準備3のスクリプト実行で、html・pdfの一発作成が可能。
sh maketest.sh 小テスト001
Windowsユーザーは、小テスト001.md をmaketest.batの上にドラッグ&ドロップすればいい。
両面印刷をして配布、オモテ面の点線の右側に解答を書かせ、解き終わったら、点線で山折りで折り曲げると、ウラ面の答えを見ながら答え合わせができるようになっている。
解答がページ右側に寄せられているのはそのため。実際に両面印刷してみると分かる。
前述の通り、問題の面だけ印刷して、学習者に配布実施して、教師が採点するのが望ましいのだろうけど…。
2020年1月8日:「md →(lualatex)→ pdf」を追記。
Pandocを用いて、ワンライナーで。ただし、PDF変換にlualatexが必要。
$ pandoc test.md -o test.pdf --pdf-engine=lualatex -V documentclass=bxjsarticle -V classoption=pandoc -V geometry:margin=25mm
-V geometry:margin=25mm
のところで、ページの余白を調整。
-V pagestyle=empty
をつけると、ページ番号(フッター)を削除することができる。
markdownファイルからpandocでcssを適応させたhtmlに変換。
さらにwkhtmltopdfで、そのhtmlからpdfに変換。
といった作業をできるだけ簡単に実行する方法。
ただし、Linuxのみ。
以下の内容の、「makepdf.sh」というファイルをmdファイル(仮に「テスト001.md」があるとする)と同じフォルダ内に作る。
#!/bin/sh
pandoc $1.md -s -c test.css -o $1.html
wkhtmltopdf --disable-smart-shrinking --margin-top 20 --margin-left 20 --margin-right 20 --margin-bottom 20 --footer-center '[page]/[topage]' $1.html $1.pdf
ヘッダーを入れる場合は上記該当部分を下のように書く。
wkhtmltopdf --disable-smart-shrinking --footer-center [page] --header-right ヘッダー名 --header-spacing 2 --header-font-size 9 --margin-top 20 --margin-left 20 --margin-right 20 --margin-bottom 20 $1.html `date +%Y%m%d-$1`.pdf
フォルダ内で端末(ターミナル)を開き、
$ sh makepdf.sh テスト001
をすると、上記スクリプトの $1 に、「テスト001」を差し込んで実行してくれる。
geanyで ビルド > ビルドコマンドを設定 で以下の内容を設定。ラベルは任意名でOK。
pandoc "%f" -s -c test.css -o "%e".html && wkhtmltopdf --disable-smart-shrinking --margin-top 20 "%e".html "%e".pdf
ビルド > 設定したラベル名をクリック。
geanyでmarkdownファイルを編集、そのままクリックするだけで、コマンド実行できるからこっちの方が楽。
※↓もっと簡単な方法ができました。こちらのほうをオススメします。
Ubuntuで年賀状の宛名作成 csvで住所録編集 2020年版 。手元にエクセル等で住所録がある人などはこちらの方が楽かも。
Ubuntuの年賀状の宛名書きが毎年の悩みだった。
Adobe AIRを入れれば年賀状ソフト使えるらしいが、Linux用は開発が終わったらしく、Windows用Adobe AIRを入れるためにはWineを入れないといけないとか…、面倒過ぎる。
LibreOfficeでもできるらしいが、これも調べたら、すごく面倒くさそう…。
できるだけ軽く、ソフト開発中止で使えなくなるとかいうリスクも少なく、将来にわたって継続して使い続けられる方法はないかと模索していた。
去年はこちらのTeXクラスファイルを使わせてもらった。
TeXで宛名印刷
しかし、宛名の連名には対応していなくて、無理やり連名にしようとすると文字列の配置に不満が残った。
自分でTeXの設定をいじれればいいのだけど、できない…。
TeXは印刷面の微妙な調整をやろうとすると、非常に複雑で自分にはあまり向いていない気がする…。
そこで今年はcssを駆使して、htmlで作成してみようと試みた。
…というか、去年もそれを試みたのだがうまくいかず挫折していたのだった(^_^;)。
今年は何とか成功!
以下、作成方法。
基本は、任意のフォルダ内に、「nenga.css」と「年賀状宛名.html」の2つのファイルを作って、テキストエディタで編集するだけ!
人名に使われている様々な異体字が使えるらしいので、IPAmj明朝フォントをインストールする。
なお、下記cssではIPAmj明朝フォントで設定していて、郵便番号の文字間などもこのフォントで調節しているので、もし郵便番号のフォントを変えるときはcssの調整が必要になると思う。
テキストエディタで、nenga.css を以下の内容で作成。
郵便番号の数字の位置に関しては、現在の私の環境で最適に合わせているつもりなので、プリンタ・ブラウザ環境(ちなみにChromium派生のVivaldiブラウザを使っている)などが変わるとズレる恐れもあるので、テスト印刷してみてズレているようであれば、cssで調整をする。
@page {size:100mm 148mm; margin:0; padding:0;}
body {margin: 0; padding:0;}
.sheet {
width:100mm; height:148mm;
margin: 0;
padding:0;
position: relative;
page-break-after: always;
}
p{
margin:0;
padding:0;
}
.郵便番号 {
font-size:12pt;
font-family:"IPAmj明朝" ; /* IPAmj明朝で文字間等を調整している */
margin:0;
padding:0;
position:absolute; top:14mm; left:46mm; /* ズレる場合は位置調整 */
letter-spacing: 4.4mm; /* 文字間 */
}
.住所 {
font-family: "IPAmj明朝";
font-size:14pt;
margin-left:0px;
padding-top:0px;
line-height:1.5em;
writing-mode: vertical-rl;
-webkit-writing-mode: vertical-rl;
text-orientation: upright;
-webkit-text-orientation: upright;
position:absolute; top:30mm; right:10mm;
}
.宛名 {
font-family:"IPAmj明朝" ;
font-size:22pt;
letter-spacing: 0.1em;
position: absolute;
top: 30%;
left: 50%;
-webkit-transform: translateY(-10%) translateX(-50%);
transform: translateY(-10%) translateX(-50%);
writing-mode: vertical-rl;
-webkit-writing-mode: vertical-rl;
text-orientation: upright;
-webkit-text-orientation: upright;
}
.差出人住所氏名 {
position:absolute; top:70mm; left:10mm;
writing-mode: vertical-rl;
-webkit-writing-mode: vertical-rl;
text-orientation: upright;
-webkit-text-orientation: upright;
}
.差出人住所 {
font-family:"IPAmj明朝" ;
font-size:10pt;
margin:0;
padding-left:0.5em;
}
.差出人 {
font-family:"IPAmj明朝" ;
font-size:14pt;
letter-spacing: 0.1em;
margin:0;
padding-top:0.5em;
}
.差出人郵便番号{
font-size:10pt;
font-family:"IPAmj明朝"; /* IPAmj明朝で文字間等を調整している */
margin:0;
padding:0;
position:absolute; top:124mm; left:6mm; /* ズレる場合は位置調整 */
letter-spacing: 1.8mm; /* 文字間 */
}
/** For screen preview **/
@media screen {
body { background: #e0e0e0 }
.sheet {
background: white;
box-shadow: 0 .5mm 2mm rgba(0,0,0,.3);
margin: 5mm;
}
}
@media print {
body {
width:100mm; height:148mm; /* needed for Chrome */
}
css作成の際に参考にしたのは、以下のサイト。ありがとうございました。
テキストエディタで、 年賀状宛名.html を以下のように、書いていく。
郵便番号は半角数字、住所の数字は漢数字または全角数字で。
通信面に差出人の名前・住所を書いているなら、下記の差出人の氏名・住所・郵便番号のところはなくてもよい。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="nenga.css" type="text/css">
<title>年賀状宛名</title>
</head>
<body>
<section class="sheet">
<p class="郵便番号">1234567</p>
<p class="住所">鹿児島県鹿児島市○○町一―一<br />桜島マンション一〇一号</p>
<div class="宛名">
<p>山田 太郎 様</p>
<p> 花子 様</p>
</div>
<div class="差出人住所氏名">
<p class="差出人住所">鹿児島市○○町一―二<br />霧島コーポ二〇二</p>
<p class="差出人">山田 一郎</p>
<p class="差出人"> 二郎</p>
</div>
<p class="差出人郵便番号">1234567</p>
</section>
<section class="sheet">
<p class="郵便番号">1234567</p>
<p class="住所">鹿児島県鹿児島市○○町1―1<br />桜島マンション101号</p>
<div class="宛名">
<p>小山田 長次郎 様</p>
</div>
<div class="差出人住所氏名">
<p class="差出人住所">鹿児島市○○町1―2</p>
<p class="差出人">山田 一郎</p>
<p class="差出人"> 二郎</p>
</div>
<p class="差出人郵便番号">1234567</p>
</section>
<section class="sheet">
<p class="郵便番号">1234567</p>
<p class="住所">鹿児島県鹿児島市○○町1―1<br />桜島マンション101号</p>
<div class="宛名">
<p>小山田 長次郎 様</p>
</div>
</section>
</body>
</html>
とりあえず、連名で書いても、少し長めの宛名(姓:3文字+名:3文字)でも、自分なりに満足のいくレイアウトになった。
ブラウザで印刷するので(ブラウザでPDFに出力してから印刷でもいい)、重たい余計なソフトは必要ないし、テキストベースでのデータ保存なので、ソフト開発終了で使えなくなるとか、データが開けなくなるとかがないので、安心。
うちのモノクロレーザープリンタ・ブラザーのHL-5250DNのLinuxドライバには、もともとハガキ設定がないこともあるのか、いろいろ設定してもハガキ印刷ができたり、できなかったりと不安定極まりない。
解決策?として、上記でできたhtmlファイルをGoogle Chromeで開いて、設定用紙はA4サイズのまま、余白をカスタムで「左56mm、上・下・右はそれぞれ0mm」にして、A4用紙の最上部・中央に位置するように設定、手差しトレイからハガキ印刷するとできた。
ただし、1枚ずつしか印刷できない…。連続して印刷しようとするとなぜか印刷されない。
左の余白は毎年、要調整だろうし、まだまだハガキ印刷は苦労が続く…。