Skip to content

Instantly share code, notes, and snippets.

@munepi
Last active August 29, 2015 14:01
Show Gist options
  • Save munepi/2c1bdc543d88cde0ebdd to your computer and use it in GitHub Desktop.
Save munepi/2c1bdc543d88cde0ebdd to your computer and use it in GitHub Desktop.
jsclasses-20140207に対して、key=value方式による特定の用紙サイズおよび任意の用紙サイズを設定可能にするパッチ。
--- jsclasses.dtx.orig 2014-02-07 10:01:04.000000000 +0900
+++ jsclasses.dtx 2014-05-25 18:19:23.000000000 +0900
@@ -19,7 +19,7 @@
% Copyright 1995-1999 ASCII Corporation.
%
% \fi
-% \CheckSum{5668}
+% \CheckSum{5833}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
@@ -132,6 +132,14 @@
% まず,オプションに関連するいくつかのコマンドやスイッチ(論理変数)を定
% 義します。
%
+% \begin{macrocode}
+\RequirePackage{keyval}
+\def\jsc@error{\ClassError{jsclasses}}
+\def\jsc@warning{\ClassWarning{jsclasses}}
+\def\jsc@warningnoline{\ClassWarningNoLine{jsclasses}}
+\def\jsc@info{\ClassInfo{jsclasses}}
+% \end{macrocode}
+%
% \begin{macro}{\if@restonecol}
%
% 段組のときに真になる論理変数です。
@@ -203,54 +211,22 @@
% \texttt{a4var}(A4変形,210mm×283mm)を追加しました。
%
% \begin{macrocode}
-\DeclareOption{a3paper}{%
- \setlength\paperheight {420mm}%
- \setlength\paperwidth {297mm}}
-\DeclareOption{a4paper}{%
- \setlength\paperheight {297mm}%
- \setlength\paperwidth {210mm}}
-\DeclareOption{a5paper}{%
- \setlength\paperheight {210mm}%
- \setlength\paperwidth {148mm}}
-\DeclareOption{a6paper}{%
- \setlength\paperheight {148mm}%
- \setlength\paperwidth {105mm}}
-\DeclareOption{b4paper}{%
- \setlength\paperheight {364mm}%
- \setlength\paperwidth {257mm}}
-\DeclareOption{b5paper}{%
- \setlength\paperheight {257mm}%
- \setlength\paperwidth {182mm}}
-\DeclareOption{b6paper}{%
- \setlength\paperheight {182mm}%
- \setlength\paperwidth {128mm}}
-\DeclareOption{a4j}{%
- \setlength\paperheight {297mm}%
- \setlength\paperwidth {210mm}}
-\DeclareOption{a5j}{%
- \setlength\paperheight {210mm}%
- \setlength\paperwidth {148mm}}
-\DeclareOption{b4j}{%
- \setlength\paperheight {364mm}%
- \setlength\paperwidth {257mm}}
-\DeclareOption{b5j}{%
- \setlength\paperheight {257mm}%
- \setlength\paperwidth {182mm}}
-\DeclareOption{a4var}{%
- \setlength\paperheight {283mm}%
- \setlength\paperwidth {210mm}}
-\DeclareOption{b5var}{%
- \setlength\paperheight {230mm}%
- \setlength\paperwidth {182mm}}
-\DeclareOption{letterpaper}{%
- \setlength\paperheight {11in}%
- \setlength\paperwidth {8.5in}}
-\DeclareOption{legalpaper}{%
- \setlength\paperheight {14in}%
- \setlength\paperwidth {8.5in}}
-\DeclareOption{executivepaper}{%
- \setlength\paperheight {10.5in}%
- \setlength\paperwidth {7.25in}}
+\DeclareOption{a3paper}{\gdef\jsc@paper{a3}}
+\DeclareOption{a4paper}{\gdef\jsc@paper{a4}}
+\DeclareOption{a5paper}{\gdef\jsc@paper{a5}}
+\DeclareOption{a6paper}{\gdef\jsc@paper{a6}}
+\DeclareOption{b4paper}{\gdef\jsc@paper{b4}}
+\DeclareOption{b5paper}{\gdef\jsc@paper{b5}}
+\DeclareOption{b6paper}{\gdef\jsc@paper{b6}}
+\DeclareOption{a4j}{\gdef\jsc@paper{a4}}
+\DeclareOption{a5j}{\gdef\jsc@paper{a5}}
+\DeclareOption{b4j}{\gdef\jsc@paper{b4}}
+\DeclareOption{b5j}{\gdef\jsc@paper{b5}}
+\DeclareOption{a4var}{\gdef\jsc@paper{a4var}}
+\DeclareOption{b5var}{\gdef\jsc@paper{b5var}}
+\DeclareOption{letterpaper}{\gdef\jsc@paper{letter}}
+\DeclareOption{legalpaper}{\gdef\jsc@paper{legal}}
+\DeclareOption{executivepaper}{\gdef\jsc@paper{executive}}
% \end{macrocode}
%
% \paragraph{横置き}
@@ -523,11 +499,22 @@
% オプション \texttt{papersize} を与えます。
%
% \begin{macrocode}
-\newif\ifpapersize
-\papersizefalse
-\DeclareOption{papersize}{\papersizetrue}
+\newif\if@papersize\@papersizetrue
+\DeclareOption{papersize}{\@papersizetrue}
+\DeclareOption{nopapersize}{\@papersizefalse}
% \end{macrocode}
%
+% \begin{macrocode}
+\DeclareOption*{\jsc@setkey}
+\def\jsc@setkey{\expandafter\@jsc@setkey\expandafter{\CurrentOption}}
+\def\@jsc@setkey{\setkeys{jsc}}
+\def\jsc@paper{a4}
+\define@key{jsc}{paper}{\gdef\jsc@paper{#1}}
+\def\jsc@paperheight{}
+\define@key{jsc}{paperheight}{\gdef\jsc@paperheight{#1}}
+\def\jsc@paperwidth{}
+\define@key{jsc}{paperwidth}{\gdef\jsc@paperwidth{#1}}
+% \end{macrocode}
% \paragraph{英語化}
%
% オプション \texttt{english} を新設しました。
@@ -557,10 +544,10 @@
% |multicols| や |url| を |\RequirePackage| するのはやめました。
%
% \begin{macrocode}
-%<article>\ExecuteOptions{a4paper,oneside,onecolumn,notitlepage,final}
-%<book>\ExecuteOptions{a4paper,twoside,onecolumn,titlepage,openright,final}
-%<jspf>\ExecuteOptions{a4paper,twoside,twocolumn,notitlepage,fleqn,final}
-%<kiyou>\ExecuteOptions{a4paper,twoside,twocolumn,notitlepage,final}
+%<article>\ExecuteOptions{oneside,onecolumn,notitlepage,final}
+%<book>\ExecuteOptions{twoside,onecolumn,titlepage,openright,final}
+%<jspf>\ExecuteOptions{twoside,twocolumn,notitlepage,fleqn,final}
+%<kiyou>\ExecuteOptions{twoside,twocolumn,notitlepage,final}
\ProcessOptions
% \end{macrocode}
%
@@ -570,6 +557,52 @@
\if@slide
\def\maybeblue{\@ifundefined{[email protected]}{}{\color{blue}}}
\fi
+\ifx\jsc@paper\@empty\else
+ \def\jsc@tmp{a3}\ifx\jsc@paper\jsc@tmp
+ \setlength\paperheight {420mm}
+ \setlength\paperwidth {297mm}
+ \else\def\jsc@tmp{a4}\ifx\jsc@paper\jsc@tmp
+ \setlength\paperheight {297mm}
+ \setlength\paperwidth {210mm}
+ \else\def\jsc@tmp{a5}\ifx\jsc@paper\jsc@tmp
+ \setlength\paperheight {210mm}
+ \setlength\paperwidth {148mm}
+ \else\def\jsc@tmp{a6}\ifx\jsc@paper\jsc@tmp
+ \setlength\paperheight {148mm}
+ \setlength\paperwidth {105mm}
+ \else\def\jsc@tmp{b4}\ifx\jsc@paper\jsc@tmp
+ \setlength\paperheight {364mm}
+ \setlength\paperwidth {257mm}
+ \else\def\jsc@tmp{b5}\ifx\jsc@paper\jsc@tmp
+ \setlength\paperheight {257mm}
+ \setlength\paperwidth {182mm}
+ \else\def\jsc@tmp{b6}\ifx\jsc@paper\jsc@tmp
+ \setlength\paperheight {182mm}
+ \setlength\paperwidth {128mm}
+ \else\def\jsc@tmp{a4var}\ifx\jsc@paper\jsc@tmp
+ \setlength\paperheight {283mm}
+ \setlength\paperwidth {210mm}
+ \else\def\jsc@tmp{b5var}\ifx\jsc@paper\jsc@tmp
+ \setlength\paperheight {230mm}
+ \setlength\paperwidth {182mm}
+ \else\def\jsc@tmp{letter}\ifx\jsc@paper\jsc@tmp
+ \setlength\paperheight {11in}
+ \setlength\paperwidth {8.5in}
+ \else\def\jsc@tmp{legal}\ifx\jsc@paper\jsc@tmp
+ \setlength\paperheight {14in}
+ \setlength\paperwidth {8.5in}
+ \else\def\jsc@tmp{executive}\ifx\jsc@paper\jsc@tmp
+ \setlength\paperheight {10.5in}
+ \setlength\paperwidth {7.25in}
+ \else
+ \jsc@error{No such paper size: \jsc@paper}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+\fi
+\ifx\jsc@paperheight\@empty\else\ifx\jsc@paperwidth\@empty\else
+ \@landscapefalse
+ \setlength\paperheight{\jsc@paperheight}
+ \setlength\paperwidth {\jsc@paperwidth}
+\fi\fi
\if@landscape
\setlength\@tempdima {\paperheight}
\setlength\paperheight{\paperwidth}
@@ -594,7 +627,7 @@
% [2003-05-17] トンボをプレビューに使うことを考えて1インチを2インチにしました。
%
% \begin{macrocode}
-\ifpapersize
+\if@papersize
\setlength{\@tempdima}{\paperwidth}
\setlength{\@tempdimb}{\paperheight}
\iftombow
@@ -724,7 +757,7 @@
% [2004-08-08] 今のdvipdfmxはdvips用スペシャルを理解するようなので外しました。
%
% \begin{macrocode}
-% \ifpapersize
+% \if@papersize
% \setlength{\@tempdima}{\paperwidth}
% \setlength{\@tempdimb}{\paperheight}
% \iftombow
%% -*- coding: utf-8-unix -*-
% #!ptex2pdf -l -u -ot '--synctex=1 --shell-escape' test-jscls
%#!platex jsclasses.ins; ptex2pdf -l -u -ot '--synctex=1 --shell-escape' test-jscls
\documentclass[uplatex,
% paper=a6,
paperheight=100mm, paperwidth=100mm,
]{jsarticle}
\makeatletter
\def\makelines#1{%
\@tempcnta\z@\relax
\def\@makeline@f@size{\f@size}%
\@whilenum\@tempcnta<#1\do{%
\advance\@tempcnta\@ne\relax
\noindent\rlap{\the\@tempcnta}\nobreak
\makelines@neline\par}%
}
\def\makelines@unit@#10#2\relax{%
\ifx!#2!\relax □\else\relax ■\fi}%
\newcounter{makelines@unit}
\def\makelines@neline{%
\c@makelines@unit\@ne
\@whilenum\c@makelines@unit<\dimexpr(\textwidth + \Cwd)/\Cwd\do{%
\expandafter\makelines@unit@\the\c@makelines@unit0\relax
\advance\c@makelines@unit\@ne}%
}
\makeatother
\begin{document}
\makelines{100}
\end{document}
@munepi
Copy link
Author

munepi commented May 23, 2014

このパッチを適用すると、keyvalパッケージによる key=value 方式により、用紙サイズ paper、用紙サイズ横/縦 paperweight, paperheight を key として設定可能になります。

  • paper= による用紙サイズを設定できます。また、旧来の a4paper, b5j などによる用紙サイズの設定方法に対して、互換性を図かっています。
  • 標準で \special による papersize が有効になります。それゆえ、nopapersizeオプションを追加しました。
  • paperweight=, paperheight= による用紙サイズ横/縦があれば、これらの値による用紙サイズの設定を最も優先します。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment