天地有情

[LaTeX][LuaLaTeX]  PDF「日本語しおり」の作り方 ~備忘録~


PDF「日本語しおり」の作り方 ~備忘録~

PDFにおいて,「日本語しおり」は文字化けが生じる不具合などが
見受けられる場合がありましが,支援パッケージ(pxjahyper.sty)
などで解消していると思われます.
以下は,備忘録です.

§1.(u)platex + dvipdfmx の場合
 
    (1)ソースファイル:foo.tex , (utf-8)
--------------------------------------------------
\documentclass[uplatex]{jsarticle}
\usepackage[dvipdfmx]{hyperref}
\usepackage{pxjahyper}
\hypersetup{%
bookmarksnumbered=true,%
bookmarkstype=toc,%
colorlinks=true,%
pdftitle={夏目漱石作品について},%
pdfsubject={吾輩は猫である,他},%
pdfauthor={匿名希望者},%
pdfkeywords={TeX,PDF,夏目漱石,PostScript}}
 
\begin{document}
\section{夏目漱石の作品について}
\subsection{吾輩は猫である}
吾輩は猫である.名前はまだ無い.云々.

\subsection{草枕}
山路を登りながら、こう考えた.云々.

\end{document}
--------------------------------------------------
 
    (2)コンパイル 
 次の順序で行います.
 uplatex foo.tex
 uplatex foo.tex
 dvipdfmx foo.dvi
 
 あるいは,
 
 ptex2pdf -l -u foo.tex
 ptex2pdf -l -u foo.tex
 
    (3)結果
 
 出来上がった PDF とその プロパティ を示します.
 
shiori01.png

 
 
shiori02.png


    (4)補足
 
 ※ PDF 文字化け対策用の atbegshi.sty は pxjahyper.sty から呼び出される
   ので \usepackage{atbegshi} の記述は不要です.
 
 ※ pxjahyper のマニュアルは pxjahyper.pdf を参照してください.
 
 ※ pxjahyper.sty は euc, sjis, utf8 に対応しています.
 
 ※ 上記の例では \hypersetup{...} を使いましたが,次のように hyperref のオプション
   としても構いません.即ち,
 
 \usepackage[dvipdfmx,%
bookmarks=true,%
bookmarksnumbered=true,%
bookmarkstype=toc,colorlinks =true,%
pdftitle ={夏目漱石作品について},%
pdfsubject ={吾輩は猫である,他},%
pdfauthor ={匿名希望者},%
pdfkeywords={TeX,PDF,夏目漱石,PostScript}]{hyperref}
 
§2.lualatex の場合
 
    (1)ソースファイル:foo.tex , (utf-8)

--------------------------------------------------
\documentclass{ltjsarticle}
\usepackage[pdftex,pdfencoding=auto]{hyperref}
\hypersetup{%
bookmarksnumbered=true,%
bookmarkstype=toc,%
colorlinks=true,%
pdftitle={夏目漱石作品について},%
pdfsubject={吾輩は猫である,他},%
pdfauthor={匿名希望者},%
pdfkeywords={TeX \000\012 PDF \000\012 夏目漱石 \000\012 PostScript}}
 
\begin{document}
\section{夏目漱石の作品について}
\subsection{吾輩は猫である}
吾輩は猫である.名前はまだ無い.云々.

\subsection{草枕}
山路を登りながら、こう考えた.云々.

\end{document}
--------------------------------------------------
 
    (2)コンパイル
 
 コンパイルは2回行います.
 lualatex foo.tex
 lualatex foo.tex
 
 あるいは,
 
 luajitlatex foo.tex
 luajitlatex foo.tex
 
    (3)結果
 
 上図(§1)と同様ですので,省略します.

    (4)補足
 
 ※ hyperref に指定するドライバは pdftex です.

 ※ また,pdfencoding=auto, あるいは unicode=true を指定して
  しおり文書のプロパティの日本語の文字化けを防止します.
  Unicodeの改行コードが 8進数 で表記できます.
  ● LF=\000\012
  ● CR=\000\015
  ● CRLF=\000\015\000\012



§3.(u)platex + dvips + Ghostscript (ps2pdf) の場合
 
(u)platex + dvips + Ghostscript (ps2pdf) で日本語の文字化けを防止する場合は
Postscript ファイルに対して convbkmk を使用します.
 
    (1)ソースファイル:foo.tex , (utf-8)

--------------------------------------------------
\documentclass{jsarticle}
\usepackage[dvips]{hyperref}
\hypersetup{%
bookmarksnumbered=true,%
bookmarkstype=toc,%
colorlinks=true,%
pdftitle={夏目漱石作品について},%
pdfsubject={吾輩は猫である,他},%
pdfauthor={匿名希望者},%
pdfkeywords={TeX,PDF,夏目漱石,PostScript}}

\begin{document}
\section{夏目漱石の作品について}
\subsection{吾輩は猫である}
吾輩は猫である.名前はまだ無い.云々.

\subsection{草枕}
山路を登りながら、こう考えた.云々.

\end{document}
--------------------------------------------------
 
    (2)コンパイル
 
  次の順序で行います.
 platex -kanji=utf8 foo.tex
 platex -kanji=utf8 foo.tex
 dvips foo.dvi
 convbkmk -g foo.ps
 ps2pdf foo-convbkmk.ps foo.pdf
 
 あるいは,bkmk2uni コマンドを使って,
 platex -kanji=utf8 foo.tex
 platex -kanji=utf8 foo.tex
 dvips foo.dvi
 bkmk2uni < foo.ps > out.ps
 ps2pdf out.ps foo.pdf
 
    (3)結果
 
 上図(§1)と同様ですので,省略します.

    (4)補足
 
 ※ hyperref に指定するドライバは dvips です.デフォルトですので省略可です.
 
 
== おわり ==
スポンサーサイト
  1. 2014/03/08(土) 10:00:37|
  2. LaTeX Tools
  3. | トラックバック:0
  4. | コメント:0

[Windows][diff][patch] Windows用の diff & patch コマンドでのパッチの適用 ~備忘録~

Windows用の diff & patch コマンドでのパッチの適用 ~備忘録~

§1.概要

diff/patchコマンドを使うとファイルの変更を別のファイルに簡単に適用できます.

今回,使用した diff/patch コマンドのバージョンは次の通りです.

  diff.exe ーーー ”diff - GNU diffutils version 2.7”
  patch.exe ーーー”patch 2.5.4”

§2.作業手順

パッチ作業は次の順で行います.

  1)diffコマンドで変更前/後ファイルの 差分(パッチ)ファイル を作成
  2)変更前ファイルに対して patchコマンド で 差分(パッチ)ファイル を適用

§3.コマンド説明

コマンドについて説明します.

● diff --help で詳細を確認できます.
  オプションとしては通常,「-u」または「-c」が使われます.
   「-u」は unified 形式で出力.
   「-c」は context 形式で出力.

● patch --help で詳細を確認できます.
  オプションとしては通常,「-u」「-c」が使われます.意味は diff の場合と同じです.
  対象がカレント・ディレクトリの場合は,-uオプション以外は使わなくてもよいと思われます.

§4.差分(パッチ)ファイルの作成とパッチ(patch)の適用

  1)パッチファイルの作成には diff コマンドを使用します.

   diff -u(または -c) 変更前ファイル名  変更後ファイル名 > 差分(パッチ)ファイル名

※ -u(または -c)オプションを付けると,差分(パッチ)ファイル自体にパッチの対象となる
  ファイルの情報が含まれます.次項で述べる patch コマンドでは,わざわざユーザが
  変更前ファイル名を指定する必要はありません.

  2)patchコマンドの適用

   patch [-u(または -c)] [適用するファイル名] < パッチファイル名

※ [適用するファイル名]は前述のとおり省略できます.パッチファイルの情報として,
  先頭の行「--- ファイル名」のファイルにパッチが適用されます.

※ 【重要なこと】パッチファイル名 の改行コードは 標準では[LF]となっています.
         Windowsの場合は必ず[CRLF] に変更します.
         もし,変更しなかった場合は次のようなメッセージが出て失敗します.

*************************************************************
missing header for unified diff at line 4 of patch
can't find file to patch at input line 4
Perhaps you should have used the -p or --strip option?
File to patch:
*************************************************************


§5.簡単なサンプル

例として以下のような2ファイル(test,test.new)を元にパッチファイルを作成してみます.

1)サンプルファイルの作成

■ test ファイル(変更前ファイル)
-----------------------------
1.あいうえお   %%「か」行なし
2.さしすせそ
3.たちつてと   %%「な」行なし
4.はひふへほ
5.まみむめも

-----------------------------

■ test.new ファイル(変更後ファイル)
-----------------------------
1.あいうえお
2.かきくけこ
3.さしすせそ
4.たちつてと
5.なにぬねの
6.はひふへほ   %%「ま」行なし

-----------------------------

※ 【重要なこと】各ファイルの[最終行]は改行してから,保存します.

2)操作

    diff -u test test.new > test.patch
 
    出力された test.patch の改行コードを[CRLF]に変更しておきます.
 次に,
    patch -u < test.patch

test.patch の内容
※ ファイルの見方の説明は §6.補足説明 を参照してください.
---------------------------------------
--- test Fri Mar 07 12:40:59 2014
+++ test.new Fri Mar 07 12:41:08 2014
@@ -1,5 +1,6 @@
1.あいうえお
-2.さしすせそ
-3.たちつてと
-4.はひふへほ
-5.まみむめも
+2.かきくけこ
+3.さしすせそ
+4.たちつてと
+5.なにぬねの
+6.はひふへほ
---------------------------------------

3)パッチ後の元のファイル test の内容

---------------------------------------
1.あいうえお
2.かきくけこ
3.さしすせそ
4.たちつてと
5.なにぬねの
6.はひふへほ
---------------------------------------

※ 上記の更新された test の内容を 変更前ファイル に戻したい場合には次の 「-R 」オプションを使います.

  patch -R < test.patch

§6.補足説明

パッチファイル test.patch の見方について説明します.

1行目: --- test は変更前(比較元)ファイル名と,そのファイルの作成日付である.

2行目: +++ test.new は変更後(比較先)ファイル名と,そのファイルの作成日付である.

3行目: @@ -R +R @@
     変更箇所の範囲情報は2つの範囲についての情報を含んでいる.一方はマイナス記号が頭に
     付いた元ファイルにおける変更箇所を示すものであり,もう一方はプラス記号が頭に付いた
     変更後のファイルにおける変更箇所を示している.範囲を示す R は l,s という形式となり,
     l は変更箇所の開始行,s はそれぞれのファイルにおける変更箇所の行数を示している.

4行目以降: 中盤の部分が比較しているテキストで,その中の「-」および「+」がついている行は
    二つのファイの相違点である.さらに冒頭の二行に「---」および「+++」が付加されている
    ことから類推すれば,「-」がついている行は比較元のファイルにのみ存在する行であること,
    逆に「+」が付加されている行は比較先にのみ存在する行であることがわかる.
    頭に何も書かれていない行は両者に共通している行である.

この項は(http://d.hatena.ne.jp/den8/20100622/1277226958)を参考にしました.

--おわり--
  1. 2014/03/07(金) 15:44:39|
  2. 便利ツール
  3. | トラックバック:0
  4. | コメント:0