Created
November 24, 2017 12:33
-
-
Save zr-tex8r/e945f3a7d3c7b775cbc3edc96d63ea8b to your computer and use it in GitHub Desktop.
LaTeX: 和文を欧文扱いして和文扱いする件
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% upLaTeX文書; 文字コードはUTF-8 | |
\documentclass[uplatex,a5paper]{utarticle} | |
\usepackage[utf8]{inputenc} | |
\usepackage[T1]{fontenc} | |
\usepackage{lmodern} | |
\usepackage{otf}% <?>で自動空白挿入 | |
\usepackage[prefercjkvar]{pxcjkcat} | |
\usepackage{zrjapunct1} | |
\cjkcategory{latn1}{noncjk}% <é>は欧文 | |
\begin{document} | |
\section{使用例(※意味無し)} | |
その地を揺るがす発表――そう題された――中で発された一節が、次のものである。 | |
“Macros are passé—It’s \emph{so} mid-20th-century.” | |
ご存知の通り……(えっ知らないの⁉何で?ナンデナンデ⁇) | |
\section{さらなる――無意味な――使用例} | |
% —(U+2014)は欧文emダッシュ | |
% ―(U+2015)は和文全角ダーシ、2個で倍角ダーシ | |
テスト—テスト―テスト――テスト | |
\section{おしまい‼} | |
\end{document} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%% 文字コードはUTF-8; upLaTeX用 | |
% zrjapunct1.sty | |
%% パッケージ宣言 | |
\NeedsTeXFormat{pLaTeX2e} | |
\ProvidesPackage{zrjapunct1} | |
\def\tczji@pkgname{zrjapunct1} | |
%% 前提パッケージ | |
\RequirePackage{pxcjkcat} | |
\RequirePackage{newunicodechar} | |
%--------------------------------------- 準備 | |
%% 和文文字命令 | |
%※補助ファイル出力に必要 | |
\kchardef\tczji@J@hyphen="2010 %<‐>HYPHEN / ハイフン(四分) | |
\kchardef\tczji@J@endash="2013 %<–>EN DASH / 二分ダーシ | |
\kchardef\tczji@J@emdash="2014 %<—>EM DASH / ダッシュ(全角) | |
\kchardef\tczji@J@horizbar="2015 %<―>HORIZONTAL BAR | |
\kchardef\tczji@J@quoteleft="2018 %<‘>LEFT SINGLE QUOTATION MARK / 左シングル引用符 | |
\kchardef\tczji@J@quoteright="2019 %<’>RIGHT SINGLE QUOTATION MARK / 右シングル引用符 | |
\kchardef\tczji@J@quotedblleft="201C %<“>LEFT DOUBLE QUOTATION MARK / 左ダブル引用符 | |
\kchardef\tczji@J@quotedblright="201D %<”>RIGHT DOUBLE QUOTATION MARK / 右ダブル引用符 | |
\kchardef\tczji@J@twodotleader="2025 %<‥>TWO DOT LEADER / 二点リーダ | |
\kchardef\tczji@J@ellipsis="2026 %<…>HORIZONTAL ELLIPSIS / 三点リーダ | |
\kchardef\tczji@J@referencemark="203B %<※>REFERENCE MARK / 米印 | |
\kchardef\tczji@J@dblexclam="203C %<‼>DOUBLE EXCLAMATION MARK / 感嘆符二つ | |
\kchardef\tczji@J@dblquestion="2047 %<⁇>DOUBLE QUESTION MARK / 疑問符二つ | |
\kchardef\tczji@J@questexclam="2048 %<⁈>QUESTION EXCLAMATION MARK / 疑問符感嘆符 | |
\kchardef\tczji@J@exclamquest="2049 %<⁉>EXCLAMATION QUESTION MARK / 感嘆符疑問符 | |
%% General Punctuation ブロックを欧文扱い | |
\cjkcategory{sym04}{noncjk} | |
%--------------------------------------- ダッシュ類 | |
% ‐(U+2010)は和文ハイフン | |
%※ - で欧文ハイフン | |
\newunicodechar{‐}{\tczji@J@hyphen} | |
%※ –(U+2013)は欧文enダッシュ (定義済) | |
%※ —(U+2014)は欧文emダッシュ (定義済) | |
% ―(U+2015)は和文全角ダーシ | |
% ――は和文倍角ダーシ | |
\newunicodechar{―}{\tczji@do@emdash} | |
%% \tczji@do@emdash | |
% 直後が \tczji@do@emdash または<―>の場合は、それを含めて | |
% 全体で倍角ダーシを出力する。それ以外は全角ダーシを出力。 | |
%※ <――>を保護付完全展開すると"\tczji@do@emdash\tczji@do@emdash" | |
%となることに注意。 | |
\DeclareRobustCommand*{\tczji@do@emdash}{% 保護付 | |
\@ifnextchar\tczji@do@emdash% 次が \tczji@do@emdash か? | |
{\tczji@do@emdash@a}{\tczji@do@emdash@b}} | |
\def\tczji@do@emdash@a#1{% #1=\tczji@do@emdash@a のはず | |
\tczji@do@dbldash}% 倍角ダーシを出力 | |
\def\tczji@do@emdash@b{% U+2015 = <E2 80 95> | |
\@ifnextchar^^e2% 次がE2か? | |
{\tczji@do@emdash@c}% | |
{\tczji@J@horizbar}}% 全角ダーシを出力 | |
\def\tczji@do@emdash@c#1#2#3{% 3バイト読む | |
\def\tczji@tmpa{#1#2#3}\def\tczji@tmpb{―}% | |
\ifx\tczji@tmpa\tczji@tmpb% 次の3バイトが<―>なら | |
\let\tczji@tmpa\tczji@do@dbldash % 倍角ダーシを出力 | |
\else \tczji@J@horizbar % 全角ダーシを出力、後に元の3バイト | |
\fi \tczji@tmpa} | |
%% \tczji@do@dbldash | |
% 倍角ダーシを出力する。 | |
\def\tczji@do@dbldash{% | |
\tczji@J@horizbar \kern-.5zw \tczji@J@horizbar | |
\kern-.5zw \tczji@J@horizbar} | |
%--------------------------------------- クオート類 | |
% 縦組なので和文のクオートは使わない前提。 | |
%※ ‘(U+2018) ’(U+2019)は欧文シングルクオート [定義済] | |
%※ “(U+201C) ”(U+201D)は欧文ダブルクオート [定義済] | |
%--------------------------------------- 区切り符号 | |
% ‼(U+203C)は和文の区切り符号 | |
\newunicodechar{‼}{\tczji@J@dblexclam\tczji@sp} | |
% ⁇(U+2047)は和文の区切り符号 | |
\newunicodechar{⁇}{\tczji@J@dblquestion\tczji@sp} | |
% ⁈(U+2048)は和文の区切り符号 | |
\newunicodechar{⁈}{\tczji@J@questexclam\tczji@sp} | |
% ⁉(U+2049)は和文の区切り符号 | |
\newunicodechar{⁉}{\tczji@J@exclamquest\tczji@sp} | |
%% \tczji@sp | |
% 直後が閉じ括弧でないなら全角空白を出力する。 | |
\DeclareRobustCommand*{\tczji@sp}{% 保護付にする | |
\@ifnextchar ){}{% | |
\@ifnextchar 」{}{% | |
\@ifnextchar ]{}{\hskip1zw\relax}}}} | |
%--------------------------------------- その他 | |
% ‥(U+2025)は和文二点リーダ | |
\newunicodechar{‥}{\tczji@J@twodotleader} | |
% …(U+2026)は和文三点リーダ | |
%※ \ldots は欧文三点リーダ | |
\newunicodechar{…}{\tczji@J@ellipsis} | |
% ※(U+203B)は和文米印 | |
%※textcompの \textreferencemark は欧文米印 | |
\newunicodechar{※}{\tczji@J@referencemark} | |
%--------------------------------------- おしまい | |
\endinput | |
%% EOF |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment