summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/gentombow/LICENSE27
-rw-r--r--macros/latex/contrib/gentombow/README.md71
-rw-r--r--macros/latex/contrib/gentombow/bounddvi-en.pdfbin0 -> 49397 bytes
-rw-r--r--macros/latex/contrib/gentombow/bounddvi-en.tex136
-rw-r--r--macros/latex/contrib/gentombow/bounddvi.pdfbin0 -> 102475 bytes
-rw-r--r--macros/latex/contrib/gentombow/bounddvi.sty112
-rw-r--r--macros/latex/contrib/gentombow/bounddvi.tex149
-rw-r--r--macros/latex/contrib/gentombow/gentombow-ja.pdfbin0 -> 174085 bytes
-rw-r--r--macros/latex/contrib/gentombow/gentombow-ja.tex459
-rw-r--r--macros/latex/contrib/gentombow/gentombow.pdfbin0 -> 150209 bytes
-rw-r--r--macros/latex/contrib/gentombow/gentombow.sty747
-rw-r--r--macros/latex/contrib/gentombow/gentombow.tex307
-rw-r--r--macros/latex/contrib/gentombow/pxesopic.sty239
-rw-r--r--macros/latex/contrib/gentombow/pxgentombow.pdfbin0 -> 23109 bytes
-rw-r--r--macros/latex/contrib/gentombow/pxgentombow.sty16
-rw-r--r--macros/latex/contrib/gentombow/pxgentombow.tex25
-rw-r--r--macros/latex/contrib/gentombow/pxpdfpages.sty72
-rw-r--r--macros/latex/contrib/gentombow/pxtextpos.sty108
-rw-r--r--macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.cls289
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin667760 -> 678803 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex132
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty10
-rw-r--r--macros/latex/contrib/projlib/ProjLib.dtx26
-rw-r--r--macros/latex/contrib/projlib/README.md2
24 files changed, 2602 insertions, 325 deletions
diff --git a/macros/latex/contrib/gentombow/LICENSE b/macros/latex/contrib/gentombow/LICENSE
new file mode 100644
index 0000000000..9661ce7b8d
--- /dev/null
+++ b/macros/latex/contrib/gentombow/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2016-2020 Hironobu Yamashita
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of the copyright holder nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/macros/latex/contrib/gentombow/README.md b/macros/latex/contrib/gentombow/README.md
new file mode 100644
index 0000000000..94cbdbdac0
--- /dev/null
+++ b/macros/latex/contrib/gentombow/README.md
@@ -0,0 +1,71 @@
+# gentombow
+
+This bundle provides a LaTeX package for generating Japanese-style
+crop marks (called 'tombow' in Japanese) for practical use in
+self-publishing.
+The core feature of "gentombow.sty" is based on pLaTeX kernel.
+
+## Supported engines
+
+All packages except bounddvi.sty works with the followings:
+- LaTeX + dvips/dvipdfmx
+- pLaTeX/upLaTeX + dvips/dvipdfmx
+- pdfLaTeX
+- LuaLaTeX
+- XeLaTeX
+
+## Bundle contents
+
+- gentombow.sty:
+ Generate crop marks (called 'tombow' in Japanese) for
+ practical use in self-publishing.
+ It provides the core 'tombow' feature if not available.
+- pxgentombow.sty:
+ (Superseded by gentombow.sty; for compatibility only.)
+- bounddvi.sty:
+ Set papersize special to DVI file.
+ Can be used on LaTeX/pLaTeX/upLaTeX (with DVI output mode)
+ with dvips or dvipdfmx drivers.
+ Old version (v6.0) was written by Koichi INOU in 2004
+ (https://www.ma.ns.tcu.ac.jp/Pages/TeX/bounddvi.sty.html),
+ and incorporated into this bundle by his courtesy.
+
+## Miscellaneous patches
+
+Some packages are unaware of crop marks defined in "gentombow";
+to cope with those packages, patches are provided here.
+- pxtextpos.sty:
+ Patch for textpos.sty (by Norman Gray).
+- pxesopic.sty:
+ Patch for eso-pic.sty (by Rolf Niepraschk).
+- pxpdfpages.sty:
+ Patch for pdfpages.sty (by Andreas Matthias).
+
+These patches can also be used independent of "gentombow",
+to avoid problems with crop marks on pLaTeX and upLaTeX.
+
+## Character encoding
+
+All the package files (.sty) contain ASCII characters only.
+All the document files (.tex) are encoded in UTF-8.
+
+## Installation
+
+- *.sty -> $TEXMF/tex/latex/gentombow
+- *.tex, *.pdf -> $TEXMF/doc/latex/gentombow
+
+## Repository
+
+The bundle is maintained on GitHub:
+ https://github.com/aminophen/gentombow
+
+## License
+
+The bundle may be distributed and/or modified under the terms of
+the 3-clause BSD license (see [LICENSE](./LICENSE)).
+
+## Release Date
+
+2020-10-14
+
+Hironobu Yamashita
diff --git a/macros/latex/contrib/gentombow/bounddvi-en.pdf b/macros/latex/contrib/gentombow/bounddvi-en.pdf
new file mode 100644
index 0000000000..2cf419316e
--- /dev/null
+++ b/macros/latex/contrib/gentombow/bounddvi-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/gentombow/bounddvi-en.tex b/macros/latex/contrib/gentombow/bounddvi-en.tex
new file mode 100644
index 0000000000..82046f888a
--- /dev/null
+++ b/macros/latex/contrib/gentombow/bounddvi-en.tex
@@ -0,0 +1,136 @@
+%# -*- ascii characters only -*-
+
+% Package v1.0--v6.0: Koichi INOUE
+% Package v7.0-- : Hironobu Yamashita
+% The package documentation (this file) was
+% written by Hironobu Yamashita.
+
+\documentclass[a4paper]{article}
+\usepackage{doc}
+\usepackage{bounddvi}
+\GetFileInfo{bounddvi.sty}
+\title{Package \textsf{bounddvi} \fileversion}
+\author{Koichi Inoue \& Hironobu Yamashita}
+\date{\filedate}
+\begin{document}
+
+\maketitle
+
+Package \textsf{bounddvi} sets papersize special into DVI file.
+This package can be used in both tate (vertical) and yoko (horizontal)
+writing directions of Japanese p\LaTeX/up\LaTeX, and both
+\texttt{dvipdfmx} and \texttt{dvips} drivers are supported.
+The \texttt{tombow} option defined in Japanese p\LaTeX\ kernel is
+also supported. Of course, this package can be used also with the
+original \LaTeX\ in DVI output mode.
+
+This package (since v7.0) is part of \textsf{gentombow} bundle:
+\begin{verbatim}
+ https://github.com/aminophen/gentombow
+\end{verbatim}
+Originally it was part of \textsf{platex-tools} bundle,
+but it has been moved since March 2018.
+
+\section*{Usage}
+
+Load this package in preamble.
+\begin{verbatim}
+ \documentclass[a5paper]{article}
+ \usepackage{bounddvi}
+ ...
+\end{verbatim}
+Process the \texttt{.tex} file using \texttt{latex} +
+\texttt{dvips} chain or \texttt{latex} + \texttt{dvipdfmx} chain.
+
+\section*{Known limitations}
+
+\begin{enumerate}
+\item The compatibility with \textsf{geometry} package may not be
+perfect, as both \textsf{geometry} and \textsf{bounddvi} embeds
+papersize special into a DVI file. The loading order of these
+two packages may affect the actual size of output.
+\item This package supports ``\textsf{jsclasses}-like employment''
+of \verb+\mag+, because it's more widely used in Japan. This may
+be incompatible with some classes or packages which employ
+\verb+\mag+ in other ways.
+\end{enumerate}
+The details are described in the sections below.
+
+\subsection*{The behavior of multiple papersize specials}
+
+Sometimes multiple papersize specials may be embedded into a DVI
+file. Among these specials, the specification which appears
+\emph{at last} in DVI takes effect when \texttt{dvipdfmx} or
+\texttt{dvips} (\TeX\ Live 2017 or later) is used\footnote{%
+When \texttt{dvips} in \TeX\ Live 2016 or earlier is used,
+the specification which appears \emph{first} in DVI took effect,
+but the default behavior was changed in \TeX\ Live r42420 to
+be compatible with \texttt{dvipdfmx}. The new option \texttt{-L0}
+can be used to recover the old behavior.}. For example, when the
+following source is processed with \texttt{dvipdfmx},
+\begin{verbatim}
+ % latex + dvipdfmx
+ \documentclass{...}
+ \usepackage{bounddvi}
+ \usepackage[dvipdfm]{geometry}
+\end{verbatim}
+the specification by \textsf{geometry} wins.
+
+\section*{Note about \texttt{\char92mag} handling}
+
+Among the packages in CTAN, there are two types of implementation
+in terms of \verb+\mag+ employment. It seems that there is no
+(official or practical) ``standard'' in \verb+\mag+ treatment.
+
+When the output is going to the physical size of A4
+($210\,\mathrm{mm} \times 297\,\mathrm{mm}$) with the setting of
+\verb+\mag=2000+, there are two ways: some classes/packages can set
+\begin{quote}
+ \texttt{\char92mag=2000}\\
+ \texttt{\char92paperwidth=210mm} ($= 420\,\mathrm{truemm}$)\\
+ \texttt{\char92paperheight=297mm} ($= 594\,\mathrm{truemm}$)
+\end{quote}
+and others can set
+\begin{quote}
+ \texttt{\char92mag=2000}\\
+ \texttt{\char92paperwidth=105mm} ($= 210\,\mathrm{truemm}$)\\
+ \texttt{\char92paperheight=148.5mm} ($= 297\,\mathrm{truemm}$)
+\end{quote}
+The first way is adopted by \textsf{geometry} package etc, and it's
+(probably) based on the behavior of the \verb+papersize+ special of
+\texttt{dvips}. It does not handle true units properly, and accepts
+only non-true units and evaluates them as if they were true units.
+The second way is adopted by \textsf{jsclasses} document class etc,
+and is also suppoted by \verb+pdf:pagesize+ special of
+\texttt{dvipdfm(x)}. This can be more consistent with \LaTeX, since
+all other layout parameters (e.g. \verb+\textwidth+) are set
+according to the unit truemm.
+
+The \textsf{bounddvi} supports the latter, so some classes/packages
+which are based on the former may or may not work properly when
+using \textsf{bounddvi} package.
+
+\section*{References}
+
+\begin{itemize}
+\item Setting paper size using \texttt{dvips} \& \texttt{dvipdfm}
+ (description in Japanese)\\
+ \texttt{https://www.ma.ns.tcu.ac.jp/Pages/TeX/bounddvi.sty.html}
+\end{itemize}
+
+\section*{ChangeLog}
+
+\begin{itemize}
+ \item 2002/03/10 v1.0 (KI) First version
+ \item 2002/10/30 v2.0 (KI) Add \texttt{dvipdfm} \texttt{pdf:pagesize} special
+ \item 2003/03/22 v3.2 (KI) Compatibility with \textsf{hyperref}
+ \item 2004/05/08 v4.0 (KI) Support for $\mathtt{\char92mag} \ne 1000$
+ \item 2004/12/08 v5.2 (KI) Compatibility with \textsf{geometry}
+ \item 2004/12/15 v6.0 (KI) Not to use \texttt{dvipdfm(x)} \texttt{pdf:pagesize special}
+ \item 2016/10/25 v7.1 (HY) Support for p\LaTeXe\ tombow option,
+ compatibility with \textsf{graphics}/\textsf{color} packages
+ \item 2016/12/28 v7.2 (HY) Documentation for the new \texttt{dvips} behavior
+ \item 2020/09/25 v8.0 (HY) Support for \LaTeXe/p\LaTeXe~2020-10-01
+\end{itemize}
+
+\end{document}
diff --git a/macros/latex/contrib/gentombow/bounddvi.pdf b/macros/latex/contrib/gentombow/bounddvi.pdf
new file mode 100644
index 0000000000..57fed9c6c7
--- /dev/null
+++ b/macros/latex/contrib/gentombow/bounddvi.pdf
Binary files differ
diff --git a/macros/latex/contrib/gentombow/bounddvi.sty b/macros/latex/contrib/gentombow/bounddvi.sty
new file mode 100644
index 0000000000..a70da52c6e
--- /dev/null
+++ b/macros/latex/contrib/gentombow/bounddvi.sty
@@ -0,0 +1,112 @@
+%
+% bounddvi.sty
+% 2020/10/08 v8.2-v7.0 h.y.acetaminophen [at] gmail.com
+% 2004/12/15 v6.0-v1.0 inoue [at] ma.ns.tcu.ac.jp
+%
+% This package, originally written by Koichi Inoue
+% and modified by Hironobu Yamashita, is distributed
+% as part of the gentombow bundle.
+% https://github.com/aminophen/gentombow
+%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bounddvi}[2020/10/08 v8.2 bounddvi]
+
+% Note: graphics/color drivers
+% - dvips.def 2016/07/10 v3.1a or later
+% - dvipdfmx.def 2016/07/10 v4.12 or later
+% emit papersize special _only_ when \Gin@setpagesizetrue
+% and \mag = 1000. When graphicx(s) or color is used with
+% setpagesize option (= default since 2016) and \mag equals
+% to 1000, we can exploit its routine.
+% (they are using \AtBeginDocument{\AtBeginDvi{...}})
+% However, these .def files do _not_ care about tombow; so,
+% we set \stock{width,height} to invoke stock test in those
+% files (probably meant for memoir.cls).
+
+% detection of \iftombow status is delayed until \AtBeginDocument,
+% to support both (u)pLaTeX kernel and ``gentombow.sty''
+\def\bddv@maybe@ensure@stock{%
+ \ifx\tombowtrue\@undefined
+ \let\bddv@ensure@stock\relax % skip if-tokens
+ \fi
+ \bddv@ensure@stock}
+
+% when \iftombow == \iftrue, we also need \stock{width,height}
+\def\bddv@ensure@stock{%
+ \iftombow
+ % if \stockwidth/\stockheight are not available,
+ % define them now
+ \ifx\stockwidth\@undefined \newdimen\stockwidth \fi
+ \ifx\stockheight\@undefined \newdimen\stockheight \fi
+ % if \stockwidth already has effective value, do nothing;
+ % otherwise assume pLaTeX-style tombow and set it to
+ % \paperwidth + 2in (similar for \stockheight)
+ \ifdim\stockwidth>\z@\else
+ \stockwidth\paperwidth \advance\stockwidth2in
+ \fi
+ \ifdim\stockheight>\z@\else
+ \stockheight\paperheight \advance\stockheight2in
+ \fi
+ \fi
+}
+
+% prepare actual papersize special
+\def\bddv@emit@papersize{%
+ \begingroup
+ % if \stockwidth/\stockheight are defined & have effective
+ % values, copy them to \paperwidth/\paperheight
+ % for current group
+ \ifx\stockwidth\@undefined\else \ifdim\stockwidth>\z@
+ \paperwidth\stockwidth
+ \fi\fi
+ \ifx\stockheight\@undefined\else \ifdim\stockheight>\z@
+ \paperheight\stockheight
+ \fi\fi
+ % adjust for \mag and emit papersize special
+ \divide\paperwidth\@m\multiply\paperwidth\mag
+ \divide\paperheight\@m\multiply\paperheight\mag
+ \special{papersize=\the\paperwidth,\the\paperheight}%
+ \endgroup
+}
+
+%% Since LaTeX2e 2020-10-01, \@begindocumenthook is deprecated
+%% and \UseHook{begindocument} etc. are used.
+%% This code appends papersize special to the _end_ of the hook.
+%% (Note: support for old dvips is removed.)
+\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
+\IfFormatAtLeastTF{2020-10-01}{%
+ \AtBeginDocument{%
+ \bddv@maybe@ensure@stock
+ \AtBeginDvi{\bddv@emit@papersize}}%
+ \endinput
+}{}
+
+%% The rest of this package is meant for
+%% LaTeX2e 2020-02-02 PL5 or older.
+
+% following code is almost equivalent to
+% \AtBeginDocument{\AtBeginDvi{...}}
+% however, we put into the _beginning_ of \@begindocumenthook;
+% this ensures proper papersize when old dvips
+% (TeX Live 2016 or earlier) is used.
+% also, note that old pLaTeX (before 2016/07/01) needs \yoko
+% at the beginning of \AtBeginDvi.
+\begingroup
+\def\@prependto@begindocumenthook{%
+ \bddv@maybe@ensure@stock
+ \global\setbox\@begindvibox\vbox{%
+ \csname yoko\endcsname\unvbox\@begindvibox
+ \bddv@emit@papersize}}
+\toks@\expandafter\expandafter\expandafter
+ {\expandafter\@prependto@begindocumenthook\@begindocumenthook}
+\xdef\@begindocumenthook{\the\toks@}
+% append papersize special again to the _end_ of the
+% current \@begindocumenthook; this will be meaningful e.g. when
+% geometry is loaded before bounddvi.
+% (geometry adds \AtBeginDocument{\AtBeginDvi{...}} specification)
+\expandafter\g@addto@macro\expandafter\@begindocumenthook
+ \expandafter{\@prependto@begindocumenthook}
+\endgroup
+
+\endinput
diff --git a/macros/latex/contrib/gentombow/bounddvi.tex b/macros/latex/contrib/gentombow/bounddvi.tex
new file mode 100644
index 0000000000..198bbb7fb9
--- /dev/null
+++ b/macros/latex/contrib/gentombow/bounddvi.tex
@@ -0,0 +1,149 @@
+%# -*- coding: utf-8 -*-
+\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016)
+ \epTeXinputencoding utf8 % ensure utf-8 encoding for platex
+\fi
+
+% パッケージ作者 (v1.0--v6.0):東京都市大学(旧称・武蔵工業大学)井上浩一
+% 修正版 (v7.0--) および本ドキュメント:山下弘展 (Hironobu Yamashita)
+
+\documentclass[a4paper]{jsarticle}
+\usepackage{doc}
+\usepackage{bounddvi}
+\GetFileInfo{bounddvi.sty}
+\title{Package \textsf{bounddvi} \fileversion}
+\author{Koichi Inoue \& Hironobu Yamashita}
+\date{\filedate}
+\begin{document}
+
+\maketitle
+
+DVIファイルは用紙サイズ情報を含みませんが、PostScriptやPDFといった
+用紙サイズを規定するフォーマットへ変換するプログラム(\texttt{dvips}や
+\texttt{dvipdfmx})は、\verb+\special+命令によってDVIファイルに埋め込ま
+れた用紙サイズ情報を解釈します。
+たとえば、幅100mm、高さ200mmの用紙に出力したい場合は
+\begin{verbatim}
+ \special{papersize=100mm,200mm}
+\end{verbatim}
+のように指定してやることができます。
+
+\textsf{bounddvi}パッケージは、クラスファイルなどが想定している用紙
+サイズ情報(\verb+\paperwidth+, \verb+\paperheight+)をDVIファイルに
+\verb+\special+命令として埋め込むことで、\texttt{dvips}や
+\texttt{dvipdfmx}の出力用紙サイズを指定する機能を提供します。
+\begin{verbatim}
+ \documentclass[a4j]{jarticle}
+ \usepackage{bounddvi}
+ \begin{document}
+ …本文…
+ \end{document}
+\end{verbatim}
+のように使います。p\LaTeX における横組と縦組の両方で使え、また
+版面拡大(\verb+\mag+)が使われた場合にも対応しています(詳細は付録
+を参照してください)。また、v7.0以降、p\LaTeX カーネルのトンボ
+オプションを使用した場合にも対応しており、p\LaTeX が仮定している
+「トンボのノビ(2in)を含めたサイズ」に設定します。
+
+本パッケージはv7.0以降、\textsf{gentombow}バンドルの一部として
+配布されています:
+\begin{verbatim}
+ https://github.com/aminophen/gentombow
+\end{verbatim}
+2017年までは\textsf{platex-tools}バンドルの一部でしたが、
+2018年以降は移転しました。
+
+\section*{他のパッケージとの互換性}
+
+用紙サイズ設定機能だけを提供する\textsf{bounddvi}パッケージのほかにも、
+パッケージの機能の一部として用紙サイズ設定を行うものがいくつかあります。
+\begin{itemize}
+\item 日本語環境でよく用いられる、p\LaTeX/up\LaTeX 用のクラスファイル
+ \textsf{jsclasses}(奥村さん作)の\texttt{papersize}オプション
+ との併用は問題ありません(ただし、このオプションを使用すれば用紙
+ サイズ設定には十分ですから、本\textsf{bounddvi}パッケージを併用
+ することにも特にメリットはありません)。
+\item 2016年以降の\textsf{graphics/graphicx}パッケージや
+ \textsf{color}パッケージには用紙サイズ設定機能
+ (\texttt{setpagesize}オプション:デフォルトで有効)が
+ ありますが、併用しても問題は起きないでしょう。
+\item \textsf{hyperref}パッケージも上と同様で、併用しても
+ 問題は起きないでしょう。
+\item \textsf{geometry}パッケージと併用する場合は、
+ 本\textsf{bounddvi}パッケージを\emph{後から}読み込むほうが
+ 安全でしょう。特に、\texttt{dvipdfmx}を使用して変換する場合に
+ トンボを付けたいなら、\textsf{bounddvi}を後から読み込むことで
+ うまくいく可能性があります(付録を参照)。
+\end{itemize}
+
+\section*{付録:複数の用紙サイズ指定が発行された場合の挙動}
+
+一つのDVIファイルに複数の用紙サイズ指定\verb+\special+命令が
+埋め込まれる場合があります。このうち、\texttt{dvipdfmx}および
+\TeX\ Live 2017以降の\texttt{dvips}では、DVIファイルの\emph{最後}に
+指定されたものが有効になります\footnote{\TeX\ Live 2016以前の
+\texttt{dvips}では、DVIファイルの\emph{最初}に指定されたものが有効
+でしたが、\TeX\ Live r42420で挙動が変更されました。\texttt{-L0}オプ
+ションを指定すると従来の挙動に戻ります。}。たとえば\textsf{bounddvi}と
+\textsf{geometry}を併用したソース
+\begin{verbatim}
+ \documentclass{...}
+ \usepackage{bounddvi}
+ \usepackage[dvipdfm]{geometry}
+\end{verbatim}
+を\textsf{dvipdfmx}でPDFに変換すると、\textsf{geometry}パッケージの
+指定が優先されます。このとき、用紙サイズの設定が正しいかどうかは
+\textsf{geometry}パッケージに依存します。
+
+\section*{付録:\texttt{\char92mag}の扱いについて}
+
+本\textsf{bounddvi}パッケージは、日本で広く使われている奥村さんの
+\textsf{jsclasses}クラス流の\verb+\mag+の用法をサポートしています。
+しかし、\verb+\mag+の使い方はCTANにある多様なパッケージの中で統一
+されておらず、大きく分けて二通りの使い方があるようです。
+
+たとえば、版面を2倍に拡大 (\verb+\mag=2000+) して物理的なA4サイズ
+($210\,\mathrm{mm}\times297\,\mathrm{mm}$)の出力を得たい場合
+\begin{quote}
+ \texttt{\char92mag=2000}\\
+ \texttt{\char92paperwidth=210mm} ($= 420\,\mathrm{truemm}$)\\
+ \texttt{\char92paperheight=297mm} ($= 594\,\mathrm{truemm}$)
+\end{quote}
+と設定するものと
+\begin{quote}
+ \texttt{\char92mag=2000}\\
+ \texttt{\char92paperwidth=105mm} ($= 210\,\mathrm{truemm}$)\\
+ \texttt{\char92paperheight=148.5mm} ($= 297\,\mathrm{truemm}$)
+\end{quote}
+と設定するものとが存在します。
+前者は\textsf{geometry}パッケージなどの方式で、おそらく\texttt{dvips}の
+\verb+papersize+ specialの挙動(truedimenを正しく解釈せず、trueの付か
+ない単位だけを受け付けてあたかもtrue付であるかのように評価)に則った
+ものでしょう。後者は\textsf{jsclasses}クラスの方式で、これは
+\texttt{dvipdfm(x)}の\verb+pdf:pagesize+ specialとも同じです。
+この方式のほうが、truedimenで設定された\LaTeX のほかのレイアウト変数
+(\verb+\textwidth+など)に対して一貫性があると思われます。
+本\textsf{bounddvi}パッケージがサポートしているのは後者の方式です。
+
+\section*{参考}
+
+\begin{itemize}
+\item dvipsやdvipdfmなどで用紙サイズを出力\\
+ \texttt{https://www.ma.ns.tcu.ac.jp/Pages/TeX/bounddvi.sty.html}
+\end{itemize}
+
+\section*{変更履歴}
+
+\begin{itemize}
+ \item 2002/03/10 v1.0 (KI) 最初の公開版
+ \item 2002/10/30 v2.0 (KI) \texttt{dvipdfm}の\texttt{pdf:pagesize special}を使用
+ \item 2003/03/22 v3.2 (KI) \textsf{hyperref}との互換性を改良
+ \item 2004/05/08 v4.0 (KI) $\mathtt{\char92mag} \ne 1000$に対応
+ \item 2004/12/08 v5.2 (KI) \texttt{dvips}で\textsf{geometry}との互換性を改良
+ \item 2004/12/15 v6.0 (KI) \texttt{dvipdfm(x)}の\texttt{pdf:pagesize special}を不使用に
+ \item 2016/10/25 v7.1 (HY) p\LaTeXe{}のトンボサポート、
+ 2016年の新しい\textsf{graphics}/\textsf{color}に対応
+ \item 2016/12/28 v7.2 (HY) 新仕様の\texttt{dvips}をドキュメント化
+ \item 2020/09/25 v8.0 (HY) \LaTeXe/p\LaTeXe~2020-10-01(予定)への対応
+\end{itemize}
+
+\end{document}
diff --git a/macros/latex/contrib/gentombow/gentombow-ja.pdf b/macros/latex/contrib/gentombow/gentombow-ja.pdf
new file mode 100644
index 0000000000..ee94b6c132
--- /dev/null
+++ b/macros/latex/contrib/gentombow/gentombow-ja.pdf
Binary files differ
diff --git a/macros/latex/contrib/gentombow/gentombow-ja.tex b/macros/latex/contrib/gentombow/gentombow-ja.tex
new file mode 100644
index 0000000000..411aad1db2
--- /dev/null
+++ b/macros/latex/contrib/gentombow/gentombow-ja.tex
@@ -0,0 +1,459 @@
+%# -*- coding: utf-8 -*-
+\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016)
+ \epTeXinputencoding utf8 % ensure utf-8 encoding for platex
+\fi
+
+\RequirePackage{plautopatch}% pldocverb
+\documentclass[a4paper,dvipdfmx]{jsarticle}
+\usepackage{doc}
+\makeatletter
+\xspcode"5C=3 %% \
+\xspcode"22=3 %% "
+%%% dangerous bend
+\font\man=manfnt at 10pt
+\def\dbend{\leavevmode\raise0pt\hbox{\man\char'177}}
+\newenvironment{dangerous}{%
+ \ifnum\@listdepth>\z@
+ \GenericError{}{Do not use `dangerous' environment inside any list}{}{}
+ \fi
+ \par\addvspace\medskipamount
+ \@tempdima=\dimexpr\textwidth-2zw\relax\small
+ \divide\@tempdima by\dimexpr1zw\relax\@tempcnta=\@tempdima
+ \leftskip=\dimexpr\textwidth-\@tempcnta zw\relax
+ \@totalleftmargin\dimexpr\leftskip+0zw
+ \linewidth=\dimexpr\@tempcnta zw-0zw
+ \parindent1zw\noindent\kern-\leftskip\hbox to\leftskip{\dbend\hss}%
+ \everypar{\everypar{}}\ignorespaces
+}{\par\addvspace\medskipamount}
+%%% logo
+\def\pTeX{p\kern-.15em\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+%%% misc
+\newcommand{\Meta}[1]{$\langle$\mbox{}\textit{#1}\mbox{}$\rangle$}
+\newcommand{\jMeta}[1]{$\langle$\mbox{}\textsf{#1}\mbox{}$\rangle$}
+%%%
+\makeatother
+\usepackage{longtable}
+\usepackage[pdfbox]{gentombow}
+%\usepackage{bounddvi}
+\GetFileInfo{gentombow.sty}
+\title{Package \textsf{gentombow} \fileversion}
+\author{Hironobu Yamashita}
+\date{\filedate}
+\begin{document}
+
+\maketitle
+
+\begin{center}
+English version is available: see \textsf{gentombow.pdf}!
+\end{center}
+
+日本の出版では、たとえば仕上がり寸法がA4サイズの場合、一回り大きな
+B4サイズの用紙の中央にトンボ付きで印刷することがあるようです。
+このドキュメントは、実際にA4用紙をB4用紙の中央にトンボ付きで
+配置している事例です。
+
+\textsf{gentombow}パッケージは、クラスファイルなどが想定している用紙
+サイズ情報(\verb+\paperwidth+, \verb+\paperheight+)を検知し、
+それより一回り大きなサイズの用紙の中央にトンボ付きで出力するために
+必要な機能を提供します。使い方の例は
+\begin{verbatim}
+ \documentclass[a4j]{jarticle}
+ \usepackage{gentombow}
+ \usepackage{bounddvi}
+ \begin{document}
+ …本文…
+ \end{document}
+\end{verbatim}
+です。
+
+任意の\LaTeX フォーマットで利用可能です。具体的には
+\begin{itemize}
+\item p\LaTeX, up\LaTeX (縦組にも対応)
+\item Lua\LaTeX (Lua\TeX-ja使用の場合は縦組にも対応)
+\item pdf\LaTeX
+\item Xe\LaTeX
+\end{itemize}
+での動作を確認しています。また、\textsf{jsclasses}のような
+版面拡大(\verb+\mag+)が使われた場合にも対応しています。
+
+ただし、本パッケージは実際の出力サイズ指定を発行しませんので、
+以下のいずれかのパッケージと併用するとよいでしょう:
+\begin{itemize}
+\item \textsf{bounddvi}パッケージ(\textsf{gentombow}バンドル)
+\item \textsf{bxpapersize}パッケージ(ZRさん作)
+\item \textsf{graphicx}パッケージの2016年以降の版
+ (\texttt{setpagesize}機能つきのもの)
+\end{itemize}
+\textsf{bounddvi}パッケージは本パッケージと同じく
+\textsf{gentombow}バンドルに収録されていますが、
+名前のとおりDVIを経由する場合にしか利用できません。
+一方、\textsf{bxpapersize}パッケージは汎用で、Lua\TeX のような
+PDF直接出力の場合にも利用できます。また、\textsf{graphicx}パッケージ
+は画像挿入用のパッケージですが、2016年以降は自動的に出力サイズ指定も
+行うようです($\verb+\mag+ \ne 1000$の場合には機能しません)。
+
+本パッケージは、\textsf{gentombow}バンドルの一部として
+配布されています:
+\begin{verbatim}
+ https://github.com/aminophen/gentombow
+\end{verbatim}
+2017年までは\textsf{platex-tools}バンドルの一部でしたが、
+2018年以降は独立させてあります。また、v0.9eまでは
+(u)p\LaTeX とLua\TeX-ja専用の\textsf{pxgentombow}パッケージを
+用意していましたが、v0.9f以降は\textsf{gentombow}に一本化しました。
+
+\section{簡単な使用法}
+
+はじめに、パッケージをオプション指定なしに使用する場合の機能を
+説明します。
+
+\subsection{用紙サイズの自動検知による出力サイズ決定}
+
+パッケージにはあらかじめA系列(\texttt{a0}--\texttt{a10})、
+B系列(\texttt{b0}--\texttt{b10})、C系列(\texttt{c0}--\texttt{c10})と
+\texttt{letter}, \texttt{legal}, \texttt{executive}の用紙サイズが
+定義されています。ここで、B系列はISOではなくJISです。
+また、変型版として\texttt{a4var}(\texttt{a4}の変型)と
+\texttt{b5var}(\texttt{b5}の変型)も定義されています。
+
+これらのうちいずれか(ただし\texttt{a0}, \texttt{b0}, \texttt{c0}を
+除く)の用紙サイズを検知すると、
+出力サイズが次の規則で自動的に決定されます\footnote{なお、
+C系列と\texttt{letter}, \texttt{legal}, \texttt{executive}については
+日本での慣習が不明の
+ため、現時点ではA系列のサイズで出力することにしています。}。
+\begin{itemize}
+\item 用紙サイズがA系列のとき:
+ 出力サイズは一回り大きなB系列
+\item 用紙サイズがB, C系列または
+ \texttt{letter}, \texttt{legal}, \texttt{executive}のとき:
+ 出力サイズは一回り大きなA系列
+\end{itemize}
+この場合、パッケージを読み込んだだけでトンボが付きます。
+なお、用紙サイズが横長の場合は自動的に出力も横長になり、
+縦長の場合は自動的に縦長になります。
+
+よく使われる用紙サイズの例を挙げます。
+\begin{longtable}[c]{cc}
+ \hline
+ 用紙サイズ & 出力サイズ \\
+ \hline
+ a6 & b6 \\
+ b6 & a5 \\
+ a5 & b5 \\
+ b5 & a4 \\
+ a4 & b4 \\
+ b4 & a3 \\
+ a3 & b3 \\
+ b3 & a2 \\
+ \hline
+ c6 & a5 \\
+ c5 & a4 \\
+ c4 & a3 \\
+ c3 & a2 \\
+ \hline
+ letter & a3 \\
+ legal & a3 \\
+ executive & a4 \\
+ \hline
+\end{longtable}
+
+\subsection*{参考:用紙サイズの自動検知に失敗した場合の出力サイズ決定}
+
+仮に用紙サイズが定義済みのいずれとも異なる場合は、デフォルトでは
+用紙の天地左右に1インチずつのノビを付けたサイズで出力します。
+たとえば、幅$100\,\mathrm{mm}$、高さ$200\,\mathrm{mm}$の用紙の場合、
+出力サイズは幅$100\,\mathrm{mm}+2\,\mathrm{in}$、
+高さ$200\,\mathrm{mm}+2\,\mathrm{in}$になります。
+
+\subsection{トンボへのバナーの出力}
+
+デフォルトでは\makeatletter\texttt{\the\@bannertoken}\makeatother
+のような形式で、トンボにジョブ情報(処理ファイル名と日付)を示すバナーが
+出力されます。これは、\pLaTeX 向けの日本語クラスファイルの多くで
+利用可能な\verb+tombow+オプションと同様です。
+ただし、クラスオプションに\verb+tombo+(ジョブ情報を出力しない)または
+\verb+mentuke+(トンボの線を表示しない)が指定されている場合は、
+この設定が引き継がれます。
+
+\section{パッケージオプション}
+
+パッケージオプションによって、出力サイズやバナーのジョブ情報の有無を
+指定する方法を説明します。
+
+\subsection{出力サイズの明示指定}
+
+自動決定されるサイズと異なるサイズに出力したい場合、
+パッケージオプションで明示的に指定することができます。たとえば
+\begin{verbatim}
+ \documentclass[a4j]{jarticle}
+ \usepackage[tombow-a3]{gentombow}
+ \begin{document}
+ …本文…
+ \end{document}
+\end{verbatim}
+とすると、出力サイズは(自動決定のb4は無視されて)a3に変わります。
+指定可能なサイズは、定義済みの用紙サイズと同じものです。すなわち、
+A系列(\texttt{a0}--\texttt{a10})、
+B系列(\texttt{b0}--\texttt{b10})、
+C系列(\texttt{c0}--\texttt{c10})と
+\texttt{a4var}, \texttt{b5var},
+\texttt{letter}, \texttt{legal}, \texttt{executive}です。
+なお、ここでも用紙サイズが横長の場合は自動的に出力も横長になり、
+縦長の場合は自動的に縦長になります。
+
+オプションは\jMeta{トンボ形式}\texttt{-}\jMeta{出力サイズ}の書式
+\footnote{他のパッケージで見られるようなkey=value形式ではないので
+注意してください。このような特殊なオプション書式を用いているのは、
+オプション名が他のクラスファイルやパッケージと衝突する可能性を
+小さくするためです。}で与えます。
+トンボ形式は、p\LaTeX の標準クラスと同じで
+\verb+tombow+, \verb+tombo+, \verb+mentuke+のいずれかを選びます
+(\verb+tombow+はジョブ情報を表示し、\verb+tombo+は表示しません。
+また、\verb+mentuke+はトンボの線を表示しません)。
+
+\subsection{トンボに表示するジョブ情報の有無}
+
+用紙サイズを明示的に指定する場合は、前節のようにトンボ形式と出力サイズを
+同時にオプションで与えることができます。
+逆に出力サイズを自動決定に任せつつ、ジョブ情報の有無だけを指定したい
+場合は、トンボへのバナー出力を抑制する\verb+notombowbanner+オプションを
+使用してください。
+
+\section{詳細なカスタマイズ}
+
+\textsf{gentombow}パッケージは、トンボの見た目やバナーの内容を
+カスタマイズする機能も提供します。
+
+\subsection{トンボに表示するバナーの内容}
+
+\verb+\settombowbanner+命令を用います。例えば\epTeX の
+\verb+\pdfcreationdate+プリミティブを使って
+\begin{verbatim}
+ \documentclass[a4j]{jarticle}
+ \usepackage{gentombow}
+ \settombowbanner{\jobname\space (\pdfcreationdate)}
+ \begin{document}
+ …本文…
+ \end{document}
+\end{verbatim}
+とすると、バナーの表示内容は
+{\settombowbanner{\jobname\space (\pdfcreationdate)}%
+ \makeatletter\texttt{\the\@bannertoken}\makeatother}になります。
+命令の引数には任意のトークン列を与えることができます。
+
+\subsection{バナーの文字のフォント}
+
+\verb+\settombowbannerfont+命令を用います。例えば
+\begin{verbatim}
+ \settombowbannerfont{cmss10 at 9pt}
+\end{verbatim}
+のような指定が可能です。内部的には\verb+\font+プリミティブを利用しており、
+使用している\TeX エンジンがサポートする任意のフォントを指定可能です
+\footnote{Lua\TeX やXe\TeX (\textsf{gentombow}パッケージの場合)では、
+OpenTypeフォントを直接利用することもできます。}。
+
+\subsection{トンボの線の太さ}
+
+デフォルトではトンボの線の太さは0.1~ptですが、
+\verb+\settombowwidth{1pt}+とすると1~ptになります。
+命令の引数には任意の寸法を与えることができますが、
+実用上は数pt以内が良いでしょう。
+
+\subsection{塗り足し(ドブ)の幅}
+
+デフォルトでは塗り足し(ドブ)の幅は3~mmですが、
+\verb+\settombowbleed{5mm}+とすると5~mmになります。
+命令の引数には任意の寸法を与えることができますが、実用上は数mmでしょう。
+
+\subsection{トンボの色}
+
+トンボの色を指定します。実際に色をつける場合は
+\textsf{xcolor}パッケージ(推奨)またはまたは\textsf{color}パッケージが必要です。
+\verb+\settombowcolor{\color[cmyk]{0,1,0,0}}+とするとマゼンタになります。
+CMYKの版ごとにトンボを作成する場合や、特色のトンボが必要な場合に便利です。
+
+\section{PDFのデジタルトンボ(page box)の設定}
+
+この機能はドライバに依存するため、オプション機能としています。
+\textsf{gentombow}パッケージ読み込み時に\verb+pdfbox+オプションを
+指定します。DVIを経由する場合は、さらにドライバオプションも必須です
+\footnote{例外として、\textsf{gentombow}が読み込まれた時点で
+\textsf{graphics}/\textsf{color}のいずれかが読み込まれていた
+場合は、そのドライバ設定を引き継ぐことができます。}。
+
+この機能を有効化すると、PDFに以下のバウンディングボックス情報
+(いわゆるデジタルトンボ)が書き込まれ、
+さらに用紙サイズ設定(\verb+/MediaBox+相当)も行われます。
+\begin{itemize}
+\item \verb+/TrimBox+: 仕上がり紙面サイズ。
+\item \verb+/BleedBox+: 裁ち落とし領域を含んだサイズ。
+\item \verb+/CropBox+, \verb+/ArtBox+: 明示しない。
+\end{itemize}
+注意:\textsf{pdfx}パッケージがPDF/Xモードで読み込まれていれば、
+このオプション機能は自動的に有効化されます。
+また、\verb+/CropBox+も明示します。
+
+\section{その他の注意点}
+
+特定のクラスファイルやパッケージと一緒に使用する場合、
+いくつかの注意点があります。
+
+\subsection{\textsf{jsclasses}で使用する場合の注意}
+
+奥村晴彦氏による\textsf{jsclasses}のクラス(2016年以降は日本語\TeX 開発
+コミュニティが管理)を使用していて、10pt以外のサイズオプションを
+指定する場合は、以下のいずれかの方法をとってください。
+\begin{itemize}
+\item クラスオプションに「トンボオプション」
+ (\verb+tombow+または\verb+tombo+)を追加する。
+\item クラスオプションに「\verb+\mag+を使わないオプション」
+ (\verb+nomag+または\verb+nomag*+)を追加する。
+\end{itemize}
+これは、\textsf{jsclasses}クラス内で行われる\verb+\oddsidemargin+と
+\verb+\topmargin+の計算の都合からくる制約です。たとえば
+\begin{verbatim}
+ \documentclass[a4j,14pt]{jsarticle}
+ \usepackage{gentombow}
+\end{verbatim}
+という使い方は\emph{誤り}です(このままでは誤った余白設定が
+適用されますので、安全のため\textsf{gentombow}パッケージ
+がエラーを出すようにしてあります)。代わりに
+\begin{verbatim}
+ \documentclass[a4j,14pt,tombow]{jsarticle}
+ \usepackage{gentombow}
+\end{verbatim}
+と書くようにしてください。
+
+また、塗り足しの幅などの寸法指定は\verb+true+付きの単位を
+使用してください。例えば
+\verb+\settombowbleed{3truemm}+と指定すれば、
+\verb+\mag+による版面拡大(縮小)後の塗り足し幅を3~mmにできます。
+
+同様に、ZR氏による\textsf{BXjscls}のクラスを使用していて、10pt以外の
+サイズオプションを指定する場合は
+\begin{itemize}
+\item クラスオプションに「\verb+\mag+を使わないオプション」
+ (\verb+nomag+または\verb+nomag*+)を追加する。
+\end{itemize}
+という対処が必要です(\textsf{BXjscls}クラスでは「トンボオプション」が
+機能しないダミーになっていることに注意)。
+
+\subsection{レイアウト設定の注意}
+
+余白などのレイアウト設定でありがちですが、
+\verb+\hoffset+や\verb+\voffset+の値を$0$以外に設定するのは
+避けてください。このような設定は\textsf{gentombow}パッケージの
+トンボ出力機能と衝突するため、正しい出力が得られません。
+レイアウト設定のために変更すべきなのはこれらの寸法ではなく、
+\verb+\oddsidemargin+や\verb+\topmargin+であることがほとんどです。
+したがって、それらを適切な値に設定するか、レイアウトの設定すべてを
+\textsf{geometry}パッケージに任せてしまうのも一つの方法です。
+
+\begin{dangerous}
+たとえば左右の余白を$25\,\mathrm{mm}$に、上下の余白を
+$30\,\mathrm{mm}$にしたいとき\footnote{ここでは「本文の領域以外」を
+余白と定義します。すなわち、ヘッダとフッタは余白の一部です。}、
+まず「\TeX の1インチ」を
+削除してから\verb+\oddsidemargin+や\verb+\topmargin+を変更すると、
+「見かけ上は」期待どおりの結果になることがあります。
+\begin{verbatim}
+ \setlength{\hoffset}{-1in}% <== NG
+ \setlength{\voffset}{-1in}% <== NG
+ \setlength{\oddsidemargin}{25mm}
+ \setlength{\topmargin}{30mm}
+ \setlength{\textwidth}{\paperwidth}
+ \addtolength{\textwidth}{-2\oddsidemargin}
+ \setlength{\textheight}{\paperheight}
+ \addtolength{\textheight}{-2\topmargin}
+ \addtolength{\topmargin}{-\headheight}
+ \addtolength{\topmargin}{-\headsep}
+\end{verbatim}
+しかし、この設定では\textsf{gentombow}パッケージがトンボを
+追加するとき、正しい余白を維持することができません。
+
+一方、\verb+\hoffset+や\verb+\voffset+は$0$のままで、以下のように
+\verb+\oddsidemargin+や\verb+\topmargin+を設定していれば問題ありません。
+\begin{verbatim}
+ \setlength{\oddsidemargin}{-0.4mm}% 25mm = 1inch - 0.4mm
+ \setlength{\topmargin}{4.6mm}% 30mm = 1inch + 4.6mm
+ \setlength{\textwidth}{\paperwidth}
+ \addtolength{\textwidth}{-50mm}
+ \addtolength{\topmargin}{-\headheight}
+ \addtolength{\topmargin}{-\headsep}
+ \setlength{\textheight}{\paperheight}
+ \addtolength{\textheight}{-60mm}
+\end{verbatim}
+これと同等のレイアウト設定は、以下のように\textsf{geometry}パッケージで
+行うのが簡単です。
+\begin{verbatim}
+ \usepackage[lmargin=25mm,rmargin=25mm,
+ tmargin=30mm,bmargin=30mm]{geometry}
+\end{verbatim}
+\end{dangerous}
+
+なお、\textsf{geometry}パッケージは用紙サイズ
+(\verb+\paperwidth+, \verb+\paperheight+)を変更する場合もあります。
+こうした場合に備え、\textsf{gentombow}パッケージは
+\textsf{geometry}パッケージよりも後に読み込むようにしてください。
+
+\section*{雑記}
+
+発端はこの話です。
+\begin{itemize}
+\item 齋藤修三郎 (@psi\_tau) on Twitter, 2017年2月9日\\
+ \texttt{https://twitter.com/psi\_tau/status/829873082911248386}
+\end{itemize}
+
+また、現在検討中の事項を挙げておきます。
+\begin{itemize}
+\item 現状では、用紙の横長・縦長がそのまま出力に反映されるので、
+ これを逆転させるオプションの実装。また、任意の出力サイズを
+ 指定できるインタフェースの実現。
+\item 自動で決定できる出力サイズの拡張。現状では用紙サイズが
+ 定義値に完全一致する場合のみ自動決定されるが、中間のサイズでも
+ その一回り大きなサイズに出力したい場合があるのではないか。
+\item 出版用途ではカラー印刷の場合に、CMYKの版ごとにトンボを作る
+ 必要がある。\textsf{color}パッケージが利用可能な場合に、
+ オプション次第でCKなど必要な色を選べるようにするとよい
+ のではないか\footnote{ただし作者の本業は出版ではないので、
+ 商用を含む実用には程遠いかもしれない。}。
+\item $\verb+\mag+ \ne 1000$の場合について、\textsf{jsclasses}以外での
+ 動作は未確認。特に、\textsf{geometry}とは共存しない可能性が高い。
+\item \verb+\stockwidth+/\verb+\stockheight+が
+ \verb+\paperwidth+/\verb+\paperheight+より小さい場合の動作。
+ 現在は警告を出すだけとしているが、さらに天地左右1inに
+ フォールバックしたほうが無難だろうか。
+\end{itemize}
+
+\section*{変更履歴}
+
+\begin{itemize}
+ \item 2017/02/10 v0.1 最初の公開版(\textsf{pxgentombow}として)
+ \item 2017/03/01 v0.4 トンボ形式の修正など
+ \item 2017/05/05 v0.5 \textsf{jsclasses}の$\verb+\mag+ \ne 1000$に対応、
+ 最初のCTANリリース版
+ \item 2017/05/06 v0.6 \textsf{jsclasses}との共存時のチェック強化、
+ Lua\TeX-jaでの動作確認
+ \item 2017/07/23 v0.7 ドキュメント更新
+ \item 2017/12/17 v0.9 \textsf{gentombow}パッケージの新設
+ \item 2018/03/16 v0.9e クラスオプションの\verb+tombow+等の引き継ぎ、
+ トンボ書式のカスタマイズ機能の追加
+ (\verb+\settombowbanner+,
+ \verb+\settombowbannerfont+,
+ \verb+\settombowwidth+の各命令)
+ \item 2018/05/17 v0.9g \textsf{gentombow}に\textsf{pxgentombow}を統合、
+ \verb+pdfbox+オプションの追加、
+ \verb+\settombowbleed+, \verb+\settombowcolor+の追加
+ \item 2018/08/20 v0.9h 用紙サイズ検出に\texttt{hagaki}を追加、
+ \textsf{pdfpages}対策の改良
+ \item 2018/08/30 v0.9j \textsf{jsclasses}の$\verb+\mag+ \ne 1000$でも
+ \verb+pdfbox+オプションが正常動作するように改良、
+ \verb+\settombowbleed+が\verb+/TrimBox+に反映されな
+ かったバグの修正
+ \item 2019/07/21 v0.9k \textsf{pdfx}パッケージとの整合性をとる改良
+ \item 2020/10/14 v0.9l \textsf{plautopatch}からトンボ対策パッチを取り込み
+\end{itemize}
+
+\end{document}
diff --git a/macros/latex/contrib/gentombow/gentombow.pdf b/macros/latex/contrib/gentombow/gentombow.pdf
new file mode 100644
index 0000000000..178bab4c52
--- /dev/null
+++ b/macros/latex/contrib/gentombow/gentombow.pdf
Binary files differ
diff --git a/macros/latex/contrib/gentombow/gentombow.sty b/macros/latex/contrib/gentombow/gentombow.sty
new file mode 100644
index 0000000000..bcd8093f50
--- /dev/null
+++ b/macros/latex/contrib/gentombow/gentombow.sty
@@ -0,0 +1,747 @@
+%
+% gentombow.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the gentombow bundle.
+% https://github.com/aminophen/gentombow
+%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{gentombow}
+ [2020/10/14 v0.9l Generate crop mark 'tombow']
+\def\pxgtmb@pkgname{gentombow}
+\@namedef{ver@pxgentombow.sty}{}% fake
+
+%% error status
+\chardef\pxgtmb@errlevel=\z@
+
+%% supported engines
+% case 2: pdfLaTeX etc.
+% case 1: pLaTeX2e <2018-04-01>+2 or older
+% case 0: pLaTeX2e <2018-05-20> or newer
+% --- checked plcore.ltx in platex 2020/09/28 v1.3g
+\ifx\pfmtname\@undefined
+ \@ifpackageloaded{luatexja}{}{\chardef\pxgtmb@errlevel=\tw@}
+\fi
+\ifnum\pxgtmb@errlevel<\tw@
+ \ifx\@tombowreset@@paper\@undefined
+ \chardef\pxgtmb@errlevel=\@ne
+ \fi
+\fi
+\ifcase\pxgtmb@errlevel
+ \let\pxgtmb@sel@twoone\@gobble
+ \let\pxgtmb@sel@two@one\@gobbletwo
+ \let\pxgtmb@sel@two\@gobble
+\or
+ \let\pxgtmb@sel@twoone\@firstofone
+ \let\pxgtmb@sel@two@one\@secondoftwo
+ \let\pxgtmb@sel@two\@gobble
+\or
+ \let\pxgtmb@sel@twoone\@firstofone
+ \let\pxgtmb@sel@two@one\@firstoftwo
+ \let\pxgtmb@sel@two\@firstofone
+\else
+ \PackageError{\pxgtmb@pkgname}{%
+ This cannot happen!
+ Please report to package author}\@ehc
+ \expandafter\endinput
+\fi
+\@onlypreamble\pxgtmb@sel@twoone
+\@onlypreamble\pxgtmb@sel@two@one
+\@onlypreamble\pxgtmb@sel@two
+
+%%%%% EMULATION BEGIN
+
+% required for patching \@outputpage
+\pxgtmb@sel@twoone{\RequirePackage{etoolbox}}
+
+% patch \@outputpage
+\begingroup
+\def\pxgtmb@emu@status{0}
+\let\pxgtmb@emu@outputpage\@outputpage
+\pxgtmb@sel@two@one
+{%% case 2 begin
+ \patchcmd\pxgtmb@emu@outputpage % try first patch
+ {\reset@font\normalsize\normalsfcodes}%
+ {\@tombowreset@@paper
+ \reset@font\normalsize\normalsfcodes}%
+ {}{\def\pxgtmb@emu@status{1}}
+ \patchcmd\pxgtmb@emu@outputpage % try second patch
+ {\@begindvi \vskip \topmargin}%
+ {\@begindvi \@outputtombow \vskip \@@topmargin}%
+ {}{\def\pxgtmb@emu@status{1}}
+}%% case 2 end
+{%% case 1 begin
+ \patchcmd\pxgtmb@emu@outputpage % try patch
+ {%
+ \@@topmargin\topmargin
+ \iftombow
+ \@@paperwidth\paperwidth \advance\@@paperwidth 6mm\relax
+ \@@paperheight\paperheight \advance\@@paperheight 16mm\relax
+ \advance\@@topmargin 1in\relax \advance\@themargin 1in\relax
+ \fi
+ \reset@font\normalsize\normalsfcodes}
+ {\@tombowreset@@paper
+ \reset@font\normalsize\normalsfcodes}%
+ {}{\def\pxgtmb@emu@status{1}}
+}%% case 1 end
+% commit the change only when successful; otherwise
+% tombow feature is never enabled, exit right away
+\pxgtmb@sel@twoone
+{%% case 2 and 1 begin
+ \if 0\pxgtmb@emu@status\relax
+ \global\let\@outputpage\pxgtmb@emu@outputpage
+ \else
+ \PackageError{\pxgtmb@pkgname}{%
+ Failed in patching \string\@outputpage!\MessageBreak
+ Sorry, I can't proceed anymore...}\@ehc
+ \expandafter\expandafter\expandafter\endinput\expandafter
+ \fi
+}%% case 2 and 1 end
+\endgroup
+%
+
+% provides equivalent for plcore.ltx
+\pxgtmb@sel@two
+{%% case 2 begin
+\newif\iftombow \tombowfalse
+\newif\iftombowdate \tombowdatetrue
+\newdimen\@tombowwidth
+\setlength{\@tombowwidth}{.1\p@}
+}%% case 2 end
+\pxgtmb@sel@twoone
+{%% case 2 and 1 begin
+\setlength{\@tombowwidth}{.1\p@}
+\def\@tombowbleed{3mm}
+\def\@tombowcolor{\normalcolor}
+}%% case 2 and 1 end
+\pxgtmb@sel@two
+{%% case 2 begin
+\newbox\@TL\newbox\@Tl
+\newbox\@TC
+\newbox\@TR\newbox\@Tr
+\newbox\@BL\newbox\@Bl
+\newbox\@BC
+\newbox\@BR\newbox\@Br
+\newbox\@CL
+\newbox\@CR
+\font\@bannerfont=cmtt9
+\newtoks\@bannertoken
+\@bannertoken{}
+}%% case 2 end
+\pxgtmb@sel@twoone
+{%% case 2 and 1 begin
+\def\maketombowbox{% hide \yoko from all boxes
+ \setbox\@TL\hbox to\z@{\csname yoko\endcsname\hss
+ \vrule width\dimexpr 10mm+\@tombowbleed\relax height\@tombowwidth depth\z@
+ \vrule height10mm width\@tombowwidth depth\z@
+ \iftombowdate
+ \raise4pt\hbox to\z@{\hskip5mm\@bannerfont\the\@bannertoken\hss}%
+ \fi}%
+ \setbox\@Tl\hbox to\z@{\csname yoko\endcsname\hss
+ \vrule width10mm height\@tombowwidth depth\z@
+ \vrule height\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth depth\z@}%
+ \setbox\@TC\hbox{\csname yoko\endcsname
+ \vrule width10mm height\@tombowwidth depth\z@
+ \vrule height10mm width\@tombowwidth depth\z@
+ \vrule width10mm height\@tombowwidth depth\z@}%
+ \setbox\@TR\hbox to\z@{\csname yoko\endcsname
+ \vrule height10mm width\@tombowwidth depth\z@
+ \vrule width\dimexpr 10mm+\@tombowbleed\relax height\@tombowwidth depth\z@\hss}%
+ \setbox\@Tr\hbox to\z@{\csname yoko\endcsname
+ \vrule height\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth depth\z@
+ \vrule width10mm height\@tombowwidth depth\z@\hss}%
+ \setbox\@BL\hbox to\z@{\csname yoko\endcsname\hss
+ \vrule width\dimexpr 10mm+\@tombowbleed\relax depth\@tombowwidth height\z@
+ \vrule depth10mm width\@tombowwidth height\z@}%
+ \setbox\@Bl\hbox to\z@{\csname yoko\endcsname\hss
+ \vrule width10mm depth\@tombowwidth height\z@
+ \vrule depth\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth height\z@}%
+ \setbox\@BC\hbox{\csname yoko\endcsname
+ \vrule width10mm depth\@tombowwidth height\z@
+ \vrule depth10mm width\@tombowwidth height\z@
+ \vrule width10mm depth\@tombowwidth height\z@}%
+ \setbox\@BR\hbox to\z@{\csname yoko\endcsname
+ \vrule depth10mm width\@tombowwidth height\z@
+ \vrule width\dimexpr 10mm+\@tombowbleed\relax depth\@tombowwidth height\z@\hss}%
+ \setbox\@Br\hbox to\z@{\csname yoko\endcsname
+ \vrule depth\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth height\z@
+ \vrule width10mm depth\@tombowwidth height\z@\hss}%
+ \setbox\@CL\hbox to\z@{\csname yoko\endcsname\hss
+ \vrule width10mm height.5\@tombowwidth depth.5\@tombowwidth
+ \vrule height10mm depth10mm width\@tombowwidth}%
+ \setbox\@CR\hbox to\z@{\csname yoko\endcsname
+ \vrule height10mm depth10mm width\@tombowwidth
+ \vrule height.5\@tombowwidth depth.5\@tombowwidth width10mm\hss}%
+}
+\def\@outputtombow{%
+ \iftombow
+ \vbox to\z@{\kern-\dimexpr 10mm+\@tombowbleed\relax\relax
+ \boxmaxdepth\maxdimen
+ \moveleft\@tombowbleed \vbox to\@@paperheight{%
+ \color@begingroup
+ \@tombowcolor
+ \hbox to\@@paperwidth{\hskip\@tombowbleed\relax
+ \copy\@TL\hfill\copy\@TC\hfill\copy\@TR\hskip\@tombowbleed}%
+ \kern-10mm
+ \hbox to\@@paperwidth{\copy\@Tl\hfill\copy\@Tr}%
+ \vfill
+ \hbox to\@@paperwidth{\copy\@CL\hfill\copy\@CR}%
+ \vfill
+ \hbox to\@@paperwidth{\copy\@Bl\hfill\copy\@Br}%
+ \kern-10mm
+ \hbox to\@@paperwidth{\hskip\@tombowbleed\relax
+ \copy\@BL\hfill\copy\@BC\hfill\copy\@BR\hskip\@tombowbleed}%
+ \color@endgroup
+ }\vss
+ }%
+ \fi
+}
+}%% case 2 and 1 end
+\pxgtmb@sel@two
+{%% case 2 begin
+\newdimen\@@paperheight
+\newdimen\@@paperwidth
+\newdimen\@@topmargin
+}%% case 2 end
+\pxgtmb@sel@twoone
+{%% case 2 and 1 begin
+\def\@tombowreset@@paper{%
+ \@@topmargin\topmargin
+ \iftombow
+ \@@paperwidth\paperwidth
+ \advance\@@paperwidth 2\dimexpr\@tombowbleed\relax
+ \@@paperheight\paperheight \advance\@@paperheight 10mm\relax
+ \advance\@@paperheight 2\dimexpr\@tombowbleed\relax
+ \advance\@@topmargin 1in\relax \advance\@themargin 1in\relax
+ \fi
+}
+}%% case 2 and 1 end
+\pxgtmb@sel@two
+{%% case 2 begin
+\newcount\hour
+\newcount\minute
+}%% case 2 end
+
+%%%%% EMULATION END
+
+%% import from jsclasses
+\hour\time \divide\hour by 60\relax
+\@tempcnta\hour \multiply\@tempcnta 60\relax
+\minute\time \advance\minute-\@tempcnta
+
+\ifnum\mag=\@m\else
+ % if BXjscls is detected and \mag != 1000,
+ % the layout will be definitely broken
+ \ifx\bxjs@param@mag\@undefined\else
+ \PackageError{\pxgtmb@pkgname}{%
+ It seems you are using Japanese `BXjscls'\MessageBreak
+ (bxjsarticle, bxjsbook, bxjsreport, etc.) or\MessageBreak
+ some derived class. Try adding `nomag' or\MessageBreak
+ `nomag*' to the class option list}\@ehc
+ \fi
+ % if \mag != 1000 and \inv@mag is defined, assume jsclasses-style \mag employment
+ \ifx\inv@mag\@undefined\else
+ % \pxgtmb@magscale is almost equivalent to \jsc@magscale (introduced around 2016)
+ % but defined only when \mag is actually employed
+ \begingroup
+ % calculation code borrowed from BXjscls
+ \@tempcnta=\mag
+ \advance\@tempcnta100000\relax
+ \def\pxgtmb@tempa#1#2#3#4\@nil{\@tempdima=#2#3.#4\p@}
+ \expandafter\pxgtmb@tempa\the\@tempcnta\@nil
+ \xdef\pxgtmb@magscale{\strip@pt\@tempdima}
+ \endgroup
+ \fi
+\fi
+
+%% this package will use tombo feature in pLaTeX kernel
+% if tombow-related option is not included in class option list,
+% show info and enable it now
+\iftombow\else
+ % if jsclasses is detected and \mag != 1000, it's too late
+ % -- When a size option other than `10pt' is specified,
+ % jsclasses uses \mag and calculates \oddsidemargin and \topmargin
+ % differently, depending on tombow status.
+ % In order to force `jsclasses' to calculate correctly,
+ % `tombow' or `tombo' is required as a class option.
+ % ... or, you may add `nomag' or `nomag*' instead.
+ \ifx\pxgtmb@magscale\@undefined\else
+ \PackageError{\pxgtmb@pkgname}{%
+ It seems you are using Japanese `jsclasses'\MessageBreak
+ (jsarticle, jsbook, jsreport, etc.) or some\MessageBreak
+ derived class. Please add `tombow' or `tombo'\MessageBreak
+ to the class option list}\@ehc
+ \fi
+ % BXjscls is already checked above, no check here
+ \PackageInfo\pxgtmb@pkgname{tombow feature enabled by \pxgtmb@pkgname}
+\fi
+\tombowtrue %\tombowdatetrue %% enabled by tombowbanner option
+\setlength{\@tombowwidth}{.1\p@}%
+
+%% import from jsclasses
+\@bannertoken{%
+ \jobname\space(\number\year-\two@digits\month-\two@digits\day
+ \space\two@digits\hour:\two@digits\minute)}
+
+%% prepare dimension
+\ifx\stockwidth\@undefined \newdimen\stockwidth \fi
+\ifx\stockheight\@undefined \newdimen\stockheight \fi
+
+%% prepare flag
+\newif\ifpxgtmb@switch \pxgtmb@switchfalse
+\newif\ifpxgtmb@landscape \pxgtmb@landscapefalse
+\newif\ifpxgtmb@pdfx@x \pxgtmb@pdfx@xfalse
+
+%% passed from class options
+%% should be declared first inside this package (least priority)
+\DeclareOption{tombow}{\tombowdatetrue}
+\DeclareOption{tombo}{\tombowdatefalse}
+\DeclareOption{mentuke}{\tombowdatefalse \setlength{\@tombowwidth}{\z@}}
+
+%% package options part 1
+\DeclareOption{tombowbanner}{\tombowdatetrue}
+\DeclareOption{notombowbanner}{\tombowdatefalse}
+\DeclareOption{tombowdate}{% obsolete since v0.9c (2018/01/11)
+ \PackageWarning{\pxgtmb@pkgname}{%
+ Option `tombowdate' is renamed;\MessageBreak
+ use `tombowbanner' instead}%
+ \tombowdatetrue}
+\DeclareOption{notombowdate}{% obsolete since v0.9c (2018/01/11)
+ \PackageWarning{\pxgtmb@pkgname}{%
+ Option `notombowdate' is renamed;\MessageBreak
+ use `notombowbanner' instead}%
+ \tombowdatefalse}
+
+%% register a list of candidate papersize
+% * \pxgtmb@addpapersize[<tombowname>]{<papername>}{<shorter edge>}{<longer edge>}
+% used for declaration of papersize.
+% when no option is specified (that is, \ifpxgtmb@switch = \iffalse),
+% also used for automatic stocksize determination.
+% * if <tombowname> = \@empty, the next <papername> is assumed.
+% * if <tombowname> = n, stocksize is set to papersize + 2in.
+\def\pxgtmb@addpapersize{\@ifnextchar[{\pxgtmb@addp@persize}{\pxgtmb@addp@persize[\@empty]}}
+\def\pxgtmb@addp@persize[#1]#2#3#4{%
+ % get current papersize and search through known standard in ascending order
+ \ifx\pxgtmb@guessedtombow\@empty
+ \ifx\pxgtmb@guessedpaper\@empty
+ % shorter edge -> \@tempdima, longer edge -> \@tempdimb
+ \ifdim\paperwidth>\paperheight\relax
+ \pxgtmb@landscapetrue
+ \@tempdima\paperheight \@tempdimb\paperwidth
+ \else
+ \pxgtmb@landscapefalse
+ \@tempdima\paperwidth \@tempdimb\paperheight
+ \fi
+ % \@ovri and \@ovro are used temporarily (safe enough)
+ \@ovri=#3\relax
+ \@ovro=#4\relax
+ % when jsclasses-style \mag employment is assumed ...
+ \ifx\pxgtmb@magscale\@undefined\else
+ \@ovri=\inv@mag\@ovri\relax
+ \@ovro=\inv@mag\@ovro\relax
+ \fi
+ % compare
+ \ifdim\@tempdima=\@ovri\relax \ifdim\@tempdimb=\@ovro\relax
+ \def\pxgtmb@guessedpaper{#2}%
+ \ifx#1\@empty\else
+ \def\pxgtmb@guessedtombow{#1}%
+ \if n\pxgtmb@guessedtombow\else
+ \ExecuteOptions{tombow-#1}% package defaults to tombowdatetrue
+ \pxgtmb@switchfalse
+ \fi
+ \fi
+ \fi \fi
+ \else
+ \def\pxgtmb@guessedtombow{#2}% save for console message
+ \pxgtmb@setstock{#3}{#4}% set stockwidth/height
+ \fi\fi
+ \DeclareOption{tombow-#2}{%
+ \pxgtmb@switchtrue
+ \tombowdatetrue
+ \pxgtmb@setstock{#3}{#4}%
+ }%
+ \DeclareOption{tombo-#2}{%
+ \pxgtmb@switchtrue
+ \tombowdatefalse
+ \pxgtmb@setstock{#3}{#4}%
+ }%
+ \DeclareOption{mentuke-#2}{%
+ \pxgtmb@switchtrue
+ \tombowdatefalse
+ \setlength{\@tombowwidth}{\z@}%
+ \pxgtmb@setstock{#3}{#4}%
+ }%
+}
+\def\pxgtmb@setstock#1#2{%
+ \ifpxgtmb@landscape
+ \setlength\stockwidth{#2}%
+ \setlength\stockheight{#1}%
+ \else
+ \setlength\stockwidth{#1}%
+ \setlength\stockheight{#2}%
+ \fi
+ % when jsclasses-style \mag employment is assumed ...
+ \ifx\pxgtmb@magscale\@undefined\else
+ \stockwidth=\inv@mag\stockwidth\relax
+ \stockheight=\inv@mag\stockheight\relax
+ \fi
+}%
+\@onlypreamble\pxgtmb@addpapersize
+\@onlypreamble\pxgtmb@addp@persize
+\@onlypreamble\pxgtmb@setstock
+
+%% initialize before search
+\def\pxgtmb@guessedpaper{}
+\def\pxgtmb@guessedtombow{}
+\@onlypreamble\pxgtmb@guessedpaper
+\@onlypreamble\pxgtmb@guessedtombow
+
+%% package options part 2
+% ISO A series <=> JIS B series in the ascending order
+\pxgtmb@addpapersize{a10}{26mm}{37mm}
+\pxgtmb@addpapersize{b10}{32mm}{45mm}
+\pxgtmb@addpapersize{a9}{37mm}{52mm}
+\pxgtmb@addpapersize{b9}{45mm}{64mm}
+\pxgtmb@addpapersize{a8}{52mm}{74mm}
+\pxgtmb@addpapersize{b8}{64mm}{91mm}
+\pxgtmb@addpapersize{a7}{74mm}{105mm}
+\pxgtmb@addpapersize{b7}{91mm}{128mm}
+\pxgtmb@addpapersize{a6}{105mm}{148mm}
+\pxgtmb@addpapersize{b6}{128mm}{182mm}
+\pxgtmb@addpapersize{a5}{148mm}{210mm}
+\pxgtmb@addpapersize{b5}{182mm}{257mm}
+\pxgtmb@addpapersize{a4}{210mm}{297mm}
+\pxgtmb@addpapersize{b4}{257mm}{364mm}
+\pxgtmb@addpapersize{a3}{297mm}{420mm}
+\pxgtmb@addpapersize{b3}{364mm}{515mm}
+\pxgtmb@addpapersize{a2}{420mm}{594mm}
+\pxgtmb@addpapersize{b2}{515mm}{728mm}
+\pxgtmb@addpapersize{a1}{594mm}{841mm}
+\pxgtmb@addpapersize{b1}{728mm}{1030mm}
+\pxgtmb@addpapersize[n]{a0}{841mm}{1189mm}
+\pxgtmb@addpapersize[n]{b0}{1030mm}{1456mm}
+
+%% package options part 3
+% ISO C series
+\pxgtmb@addpapersize[a9]{c10}{28mm}{40mm}
+\pxgtmb@addpapersize[a8]{c9}{40mm}{57mm}
+\pxgtmb@addpapersize[a7]{c8}{57mm}{81mm}
+\pxgtmb@addpapersize[a6]{c7}{81mm}{114mm}
+\pxgtmb@addpapersize[a5]{c6}{114mm}{162mm}
+\pxgtmb@addpapersize[a4]{c5}{162mm}{229mm}
+\pxgtmb@addpapersize[a3]{c4}{229mm}{354mm}
+\pxgtmb@addpapersize[a2]{c3}{324mm}{458mm}
+\pxgtmb@addpapersize[a1]{c2}{458mm}{648mm}
+\pxgtmb@addpapersize[a0]{c1}{648mm}{917mm}
+\pxgtmb@addpapersize[n]{c0}{917mm}{1297mm}
+% misc
+\pxgtmb@addpapersize[b4]{a4j}{210mm}{297mm}
+\pxgtmb@addpapersize[b5]{a5j}{148mm}{210mm}
+\pxgtmb@addpapersize[a3]{b4j}{257mm}{364mm}
+\pxgtmb@addpapersize[a4]{b5j}{182mm}{257mm}
+\pxgtmb@addpapersize[b4]{a4var}{210mm}{283mm}
+\pxgtmb@addpapersize[a4]{b5var}{182mm}{230mm}
+\pxgtmb@addpapersize[a3]{letter}{8.5in}{11in}
+\pxgtmb@addpapersize[a3]{legal}{8.5in}{14in}
+\pxgtmb@addpapersize[a4]{executive}{7.25in}{10.5in}
+\pxgtmb@addpapersize[a5]{hagaki}{100mm}{148mm}
+
+%% package options part 4
+\def\pxgtmb@pdfbox@status{0}
+\DeclareOption{pdfbox}{\def\pxgtmb@pdfbox@status{1}}
+\DeclareOption{dvips}{\def\pxgtmb@driver{s}}
+\DeclareOption{dvipdfmx}{\def\pxgtmb@driver{m}}
+\DeclareOption{xetex}{\def\pxgtmb@driver{x}}
+\DeclareOption{pdftex}{\def\pxgtmb@driver{p}}
+\DeclareOption{luatex}{\def\pxgtmb@driver{l}}
+
+%% default options
+\ExecuteOptions{tombowbanner}% package defaults to tombowdatetrue
+\ProcessOptions
+
+%% display search result
+% if any of explicit size option is specified, \ifpxgtmb@switch = \iftrue.
+% otherwise, automatic size detection should be successful.
+\ifpxgtmb@switch\else
+ % check status
+ \@tempcnta=\z@\relax
+ \ifx\pxgtmb@guessedpaper\@empty
+ \advance\@tempcnta\@ne\relax
+ \fi
+ \ifx\pxgtmb@guessedtombow\@empty
+ \advance\@tempcnta\tw@\relax
+ \else\if n\pxgtmb@guessedtombow
+ \advance\@tempcnta\tw@\relax
+ \fi\fi
+ % message
+ \ifodd\@tempcnta
+ %\PackageWarningNoLine\pxgtmb@pkgname{%
+ % No size option specified, and automatic papersize\MessageBreak
+ % detection also failed}
+ \else
+ \typeout{***** Package \pxgtmb@pkgname\space detected \pxgtmb@guessedpaper paper. *****}
+ \fi
+ \ifnum\@tempcnta>\@ne\relax
+ \PackageWarningNoLine\pxgtmb@pkgname{%
+ Output size cannot be determined. Please add size\MessageBreak
+ option (e.g. `tombow-a4') to specify output size.\MessageBreak
+ Falling back to +1in ..}
+ \stockwidth\paperwidth \advance\stockwidth 2in
+ \stockheight\paperheight \advance\stockheight 2in
+ \else
+ \typeout{***** Now the output size is automatically set to \pxgtmb@guessedtombow. *****}
+ \fi
+\fi
+
+%% warnings
+\ifdim\stockwidth<\paperwidth
+ \PackageWarningNoLine\pxgtmb@pkgname{%
+ \string\stockwidth\space is smaller than \string\paperwidth!\MessageBreak
+ Is this really what you want?}
+\fi
+\ifdim\stockheight<\paperheight
+ \PackageWarningNoLine\pxgtmb@pkgname{%
+ \string\stockheight\space is smaller than \string\paperheight!\MessageBreak
+ Is this really what you want?}
+\fi
+
+%% pdf "digital tombo" (driver-dependent)
+% the box size calculation is delayed until \AtBeginDocument
+% to allow users to change \@tombowbleed in the preamble
+
+% convert pt -> bp
+\def\pxgtmb@PDF@setbp#1#2{%
+ \@tempdima=.996264#2\relax % 0.996264 = 72/72.27 (cf. 1in = 72.27pt = 72bp)
+ \@tempdima=\pxgtmb@magscale\@tempdima % adjustment for jsclasses-style \mag employment
+ \edef#1{\strip@pt\@tempdima}}
+% calculate and create pdf boxes
+\def\pxgtmb@PDF@calcbox{%
+ \begingroup
+ % provide fallback definition inside this group
+ \ifx\pxgtmb@magscale\@undefined
+ \def\pxgtmb@magscale{1}%
+ \fi
+ % set pdf boxes in bp unit
+ \pxgtmb@PDF@setbp\pxgtmb@PDF@crop@ur@x\stockwidth
+ \pxgtmb@PDF@setbp\pxgtmb@PDF@crop@ur@y\stockheight
+ \pxgtmb@PDF@setbp\pxgtmb@PDF@trim@ll@x{\dimexpr(\stockwidth-\paperwidth)/2}%
+ \pxgtmb@PDF@setbp\pxgtmb@PDF@trim@ll@y{\dimexpr(\stockheight-\paperheight)/2}%
+ \pxgtmb@PDF@setbp\pxgtmb@PDF@trim@ur@x{\dimexpr(\stockwidth+\paperwidth)/2}%
+ \pxgtmb@PDF@setbp\pxgtmb@PDF@trim@ur@y{\dimexpr(\stockheight+\paperheight)/2}%
+ \pxgtmb@PDF@setbp\pxgtmb@PDF@bleed@ll@x{\dimexpr(\stockwidth-\paperwidth)/2-\@tombowbleed}%
+ \pxgtmb@PDF@setbp\pxgtmb@PDF@bleed@ll@y{\dimexpr(\stockheight-\paperheight)/2-\@tombowbleed}%
+ \pxgtmb@PDF@setbp\pxgtmb@PDF@bleed@ur@x{\dimexpr(\stockwidth+\paperwidth)/2+\@tombowbleed}%
+ \pxgtmb@PDF@setbp\pxgtmb@PDF@bleed@ur@y{\dimexpr(\stockheight+\paperheight)/2+\@tombowbleed}%
+ \xdef\pxgtmb@PDF@CTM{%
+ %% CropBox: normally implicit (same as MediaBox, large paper size)
+ %% however, pdfx.sty in PDF/X mode sets /CropBox explicitly, so I need to override it!
+ \ifpxgtmb@pdfx@x
+ \noexpand\pxgtmb@PDF@begin
+ /CropBox [0 0
+ \pxgtmb@PDF@crop@ur@x\space
+ \pxgtmb@PDF@crop@ur@y] \noexpand\pxgtmb@PDF@end
+ \fi
+ %% BleedBox: explicit (final paper size + surrounding \@tombowbleed)
+ \noexpand\pxgtmb@PDF@begin
+ /BleedBox [\pxgtmb@PDF@bleed@ll@x\space
+ \pxgtmb@PDF@bleed@ll@y\space
+ \pxgtmb@PDF@bleed@ur@x\space
+ \pxgtmb@PDF@bleed@ur@y] \noexpand\pxgtmb@PDF@end
+ %% TrimBox: explicit (final paper size)
+ \noexpand\pxgtmb@PDF@begin
+ /TrimBox [\pxgtmb@PDF@trim@ll@x\space
+ \pxgtmb@PDF@trim@ll@y\space
+ \pxgtmb@PDF@trim@ur@x\space
+ \pxgtmb@PDF@trim@ur@y] \noexpand\pxgtmb@PDF@end
+ %% ArtBox: implicit
+ %% [Note] PDF/X requires /TrimBox or /ArtBox but not both!
+ }%
+ \endgroup
+}
+
+% do it
+\AtBeginDocument{\pxgtmb@PDF@emit}
+\def\pxgtmb@PDF@emit{%
+ % handle compatibility with pdfx.sty here;
+ % if pdfx.sty with PDF/X mode detected, force [pdfbox] option!
+ \pxgtmb@handle@pdfx
+ \ifpxgtmb@pdfx@x\def\pxgtmb@pdfbox@status{1}\fi
+ % start actual procedure for [pdfbox] option
+ \if 1\pxgtmb@pdfbox@status
+%% supported drivers: dvips, dvipdfmx, XeTeX, pdfTeX, LuaTeX
+\ifnum0\ifx\pdfvariable\@undefined\else\the\outputmode\fi=0\relax
+\ifnum0\ifx\pdfpageattr\@undefined\else\the\pdfoutput\fi=0\relax
+ %% for DVI output or XeTeX
+ \ifx\XeTeXversion\@undefined
+ \chardef\pxgtmb@errlevel=\z@
+ % check graphics/graphicx/color status
+ \ifx\Gin@driver\@undefined
+ \ifx\pxgtmb@driver\@undefined % driver option unavailable
+ \PackageError{\pxgtmb@pkgname}{%
+ Option `pdfbox' is driver-dependent!\MessageBreak
+ Please add a driver option}\@ehc
+ \def\pxgtmb@driver{s}% fallback
+ \fi
+ \else
+ % check consistency
+ \def\pxgtmb@tempa{dvips.def}\ifx\Gin@driver\pxgtmb@tempa
+ \ifx\pxgtmb@driver\@undefined
+ \def\pxgtmb@driver{s}% pass
+ \else
+ \if s\pxgtmb@driver\else \chardef\pxgtmb@errlevel=\@ne \fi
+ \fi
+ \else\def\pxgtmb@tempa{dvipdfmx.def}\ifx\Gin@driver\pxgtmb@tempa
+ \ifx\pxgtmb@driver\@undefined
+ \def\pxgtmb@driver{m}% pass
+ \else
+ \if m\pxgtmb@driver\else \chardef\pxgtmb@errlevel=\@ne \fi
+ \fi
+ \else
+ \ifx\pxgtmb@driver\@undefined
+ \PackageError{\pxgtmb@pkgname}{%
+ Option `pdfbox' is driver-dependent!\MessageBreak
+ Please add a driver option}\@ehc
+ \def\pxgtmb@driver{s}% fallback
+ \fi
+ \fi\fi
+ \ifnum\pxgtmb@errlevel>\z@
+ \PackageWarningNoLine{\pxgtmb@pkgname}{%
+ Inconsistent driver option detected!\MessageBreak
+ Package `graphics' or `color' already\MessageBreak
+ loaded with different driver option}\@ehc
+ \fi
+ \fi
+ \else
+ \def\pxgtmb@driver{x}
+ \fi
+ % required for putting \special to every page
+ \RequirePackage{atbegshi}
+ \ifx\pfmtname\@undefined\else
+ \ifx\AtBegShi@Output\@undefined
+ % LaTeX2e 2020-10-01: an emulation by ``atbegshi-ltx.sty''
+ % => pLaTeX2e 2020-10-01 natively supports it
+ \else
+ % older: the real ``atbegshi.sty'' is loaded
+ \IfFileExists{pxatbegshi.sty}{\RequirePackage{pxatbegshi}}{}
+ \fi
+ \fi
+ % do it
+ \if x\pxgtmb@driver
+ %% for XeTeX (similar to dvipdfmx, except for paper size)
+ \AtBeginDocument{%
+ \pxgtmb@PDF@calcbox
+ \def\pxgtmb@PDF@begin{}\def\pxgtmb@PDF@end{}%
+ \edef\pxgtmb@PDF@CTM{{pdf:put @thispage << \pxgtmb@PDF@CTM >>}}}
+ % force paper size
+ \pdfpagewidth\stockwidth \pdfpageheight\stockheight
+ % emit pdf boxes
+ \AtBeginShipout{\setbox\AtBeginShipoutBox=\vbox{%
+ \baselineskip\z@skip\lineskip\z@skip\lineskiplimit\z@
+ \expandafter\special\pxgtmb@PDF@CTM % here!
+ \copy\AtBeginShipoutBox}}
+ \else
+ \if s\pxgtmb@driver
+ %% for dvips
+ \AtBeginDocument{%
+ \pxgtmb@PDF@calcbox
+ \def\pxgtmb@PDF@begin{[ }\def\pxgtmb@PDF@end{/PAGE pdfmark }%
+ \edef\pxgtmb@PDF@CTM{{ps:SDict begin \pxgtmb@PDF@CTM end}}}
+ \else\if m\pxgtmb@driver
+ %% for dvipdfmx
+ \AtBeginDocument{%
+ \pxgtmb@PDF@calcbox
+ \def\pxgtmb@PDF@begin{}\def\pxgtmb@PDF@end{}%
+ \edef\pxgtmb@PDF@CTM{{pdf:put @thispage << \pxgtmb@PDF@CTM >>}}}
+ \else
+ %% for others (in case graphics option wrong)
+ \PackageError{\pxgtmb@pkgname}{Sorry, driver unsupported}\@ehc
+ \def\pxgtmb@PDF@CTM{{}}% dummy
+ \fi\fi
+ %% common
+ \begingroup
+ % when jsclasses-style \mag employment is assumed ...
+ % [Note] \special{papersize=<width>,<height>} accepts only non-true units
+ % and evaluates them as if they were true units!
+ \ifx\pxgtmb@magscale\@undefined\else
+ \stockwidth \pxgtmb@magscale\stockwidth
+ \stockheight\pxgtmb@magscale\stockheight
+ \fi
+ \xdef\pxgtmb@PDF@size{{papersize=\the\stockwidth,\the\stockheight}}
+ \endgroup
+ \AtBeginShipout{\setbox\AtBeginShipoutBox=\vbox{%
+ \baselineskip\z@skip\lineskip\z@skip\lineskiplimit\z@
+ % force paper size
+ \expandafter\special\pxgtmb@PDF@size
+ % emit pdf boxes
+ \expandafter\special\pxgtmb@PDF@CTM % here!
+ \copy\AtBeginShipoutBox}}
+ \fi
+\else
+ %% for pdfTeX
+ \def\pxgtmb@driver{p}
+ % force paper size
+ \pdfpagewidth\stockwidth \pdfpageheight\stockheight
+ % emit pdf boxes
+ \AtBeginDocument{%
+ \pxgtmb@PDF@calcbox
+ \def\pxgtmb@PDF@begin{}\def\pxgtmb@PDF@end{}%
+ \edef\pxgtmb@PDF@CTM{{\pxgtmb@PDF@CTM}}%
+ \expandafter\pdfpageattr\pxgtmb@PDF@CTM}
+\fi\else
+ %% for LuaTeX
+ \def\pxgtmb@driver{l}
+ % force paper size
+ \pagewidth\stockwidth \pageheight\stockheight
+ % emit pdf boxes
+ \AtBeginDocument{%
+ \pxgtmb@PDF@calcbox
+ \def\pxgtmb@PDF@begin{}\def\pxgtmb@PDF@end{}%
+ \edef\pxgtmb@PDF@CTM{pageattr{\pxgtmb@PDF@CTM}}%
+ \expandafter\pdfvariable\pxgtmb@PDF@CTM}
+\fi
+ \fi
+}
+
+%% make visible tombow box according to the current status of
+%% \@bannerfont, \@bannertoken, \@tombowwidth & \@tombowbleed
+\maketombowbox
+
+%% shift amount
+\hoffset .5\stockwidth
+\advance\hoffset -.5\paperwidth
+\advance\hoffset-1truein\relax
+\voffset .5\stockheight
+\advance\voffset -.5\paperheight
+\advance\voffset-1truein\relax
+
+%% user interface
+\newcommand{\settombowbanner}[1]{%
+ \iftombowdate\else
+ \PackageWarning{\pxgtmb@pkgname}{%
+ Package option `tombowbanner' is not effective.\MessageBreak
+ The banner may be discarded}%
+ \fi
+ \@bannertoken{#1}\maketombowbox}
+\newcommand{\settombowbannerfont}[1]{%
+ \font\@bannerfont=#1\relax \maketombowbox}
+\newcommand{\settombowwidth}[1]{%
+ \setlength{\@tombowwidth}{#1}\maketombowbox}
+\newcommand{\settombowbleed}[1]{%
+ \def\@tombowbleed{#1}\maketombowbox}
+\newcommand{\settombowcolor}[1]{%
+ \def\@tombowcolor{#1}}
+% forbid changing \@tombowbleed after \begin{document}
+% because pdf boxes are calculated only inside \AtBeginDocument
+\@onlypreamble\settombowbleed
+
+%% patch internal of pdfpages.sty to work with tombow
+\def\pxgtmb@patch@pdfpages{%
+ \IfFileExists{pxpdfpages.sty}{\RequirePackage{pxpdfpages}}{}}
+\AtBeginDocument{\@ifpackageloaded{pdfpages}{\pxgtmb@patch@pdfpages}{}}
+
+%% patch pdfx.sty
+%% (tested on pdfx 2019/02/27 v1.6.3)
+\def\pxgtmb@handle@pdfx{\@ifpackageloaded{pdfx}{\let\ifpxgtmb@pdfx@x\ifpdfx@x}{}}
+
+\endinput
diff --git a/macros/latex/contrib/gentombow/gentombow.tex b/macros/latex/contrib/gentombow/gentombow.tex
new file mode 100644
index 0000000000..d0bc4523ab
--- /dev/null
+++ b/macros/latex/contrib/gentombow/gentombow.tex
@@ -0,0 +1,307 @@
+%# -*- ascii characters only -*-
+
+\documentclass[a4paper]{article}
+\usepackage{doc}
+\makeatletter
+%%% dangerous bend
+\font\man=manfnt at 10pt
+\def\dbend{\leavevmode\raise0pt\hbox{\man\char'177}}
+\newenvironment{dangerous}{%
+ \ifnum\@listdepth>\z@
+ \GenericError{}{Do not use `dangerous' environment inside any list}{}{}
+ \fi
+ \par\addvspace\medskipamount
+ \@tempdima=\dimexpr\textwidth-2zw\relax\small
+ \divide\@tempdima by\dimexpr1zw\relax\@tempcnta=\@tempdima
+ \leftskip=\dimexpr\textwidth-\@tempcnta zw\relax
+ \@totalleftmargin\dimexpr\leftskip+0zw
+ \linewidth=\dimexpr\@tempcnta zw-0zw
+ \parindent1zw\noindent\kern-\leftskip\hbox to\leftskip{\dbend\hss}%
+ \everypar{\everypar{}}\ignorespaces
+}{\par\addvspace\medskipamount}
+%%% misc
+\newcommand{\Meta}[1]{$\langle$\mbox{}\textit{#1}\mbox{}$\rangle$}
+%%%
+\makeatother
+\usepackage{longtable}
+\usepackage[pdfbox]{gentombow}
+%\usepackage{bxpapersize}
+\GetFileInfo{gentombow.sty}
+\title{Package \textsf{gentombow} \fileversion}
+\author{Hironobu Yamashita}
+\date{\filedate}
+\begin{document}
+
+\maketitle
+
+It is convenient to print documents for final smaller paper sizes
+on paper of the printer's standard physical paper size;
+it allows printing close to the logical paper edge
+and even outside the logical page.
+
+This package \textsf{gentombow} provides a Japanese-style
+crop marks (called `tombow' in Japanese) for trimming paper stacks,
+and place the document page at the center of a larger physical
+paper sheet. It automatically detects the page size
+(\verb+\paperwidth+, \verb+\paperheight+) which is
+going to be set by document class.
+This document itself is a demonstration of this package,
+with final A4 paper printed on B4 (JIS B4; not ISO B4!) paper.
+
+A basic usage:
+\begin{verbatim}
+ \documentclass[a4paper]{article}
+ \usepackage{gentombow}
+ \usepackage{graphicx}
+ \begin{document}
+ The content
+ \end{document}
+\end{verbatim}
+
+Note that this package does nothing about output paper size
+specification; use one of the followings to do it.
+\begin{itemize}
+\item \textsf{graphicx} package
+ with \texttt{setpagesize} feature added in 2016
+ (supports all engines)
+\item \textsf{bxpapersize} package
+ (supports all engines; by Takayuki YATO)
+\item \textsf{bounddvi} package
+ (supports only DVI output mode; part of \textsf{gentombow} bundle)
+\end{itemize}
+
+This package is part of \textsf{gentombow} bundle:
+\begin{verbatim}
+ https://github.com/aminophen/gentombow
+\end{verbatim}
+Originally it was part of \textsf{platex-tools} bundle,
+but it has been moved since March 2018.
+
+\section{Basic Functions}
+
+First, I introduce some basic functions of \textsf{gentombow} package.
+
+\subsection{Automatic Determination of Output Size}
+
+In this package,
+the following printer's standard physical paper sizes are predefined;
+A series (\texttt{a0}--\texttt{a10}),
+B series (\texttt{b0}--\texttt{b10}),
+C series (\texttt{c0}--\texttt{c10}),
+\texttt{letter}, \texttt{legal} and \texttt{executive}.
+In the current release, `B series' is JIS standard,
+not ISO standard (this might be changed in the near future).
+Also, some variations \texttt{a4var} and \texttt{b5var} are predefined.
+
+When one of the above sizes (except \texttt{a0}, \texttt{b0}
+and \texttt{c0}) is detected, the output size is
+automatically determined along with the following rule:
+\begin{itemize}
+\item When A series detected:
+ the output is going to be larger B series
+\item When B/C series or
+ \texttt{letter}, \texttt{legal}, \texttt{executive} detected:
+ the output is going to be larger A series
+\end{itemize}
+The crop marks are automatically added.
+The orientation (landscape/portrait) of the input paper is
+also preserved.
+
+The following list shows common examples:
+\begin{longtable}[c]{cc}
+ \hline
+ Detected page size & Output size \\
+ \hline
+ a6 & b6 \\
+ b6 & a5 \\
+ a5 & b5 \\
+ b5 & a4 \\
+ a4 & b4 \\
+ b4 & a3 \\
+ a3 & b3 \\
+ b3 & a2 \\
+ \hline
+ c6 & a5 \\
+ c5 & a4 \\
+ c4 & a3 \\
+ c3 & a2 \\
+ \hline
+ letter & a3 \\
+ legal & a3 \\
+ executive & a4 \\
+ \hline
+\end{longtable}
+
+\subsection*{When Automatic Determination Failed}
+
+When the page size is different from any of the predefined sizes,
+the page is placed with the surrounding 1~inch margins.
+For example, when the page has $100\,\mathrm{mm}$ width and
+$200\,\mathrm{mm}$ height, the output size is going to be
+$100\,\mathrm{mm}+2\,\mathrm{in}$ width and
+$200\,\mathrm{mm}+2\,\mathrm{in}$ height.
+
+\subsection{Job Info Printing}
+
+By default, the crop marks are printed with a banner, which shows
+a job info like \makeatletter\texttt{\the\@bannertoken}\makeatother.
+The format is similar to \verb+tombow+ option, which is
+available in most of the common Japanese classes.
+The default also reacts to \verb+tombo+ (without a job info) or
+\verb+mentuke+ (do not print actual crop marks) class options.
+
+\section{Package Options}
+
+You can specify output size and/or disable job info printing
+using package options.
+
+\subsection{Explicit Specification of Output Size}
+
+You can also force the output size using package option.
+For example,
+\begin{verbatim}
+ \documentclass[a4paper]{article}
+ \usepackage[tombow-a4]{gentombow}
+ \begin{document}
+ The content
+ \end{document}
+\end{verbatim}
+forces the output size to be a3 (the automatic determination
+`b4' is discarded). Available sizes are the same as
+the predefined sizes, that is,
+A series (\texttt{a0}--\texttt{a10}),
+B series (\texttt{b0}--\texttt{b10}),
+C series (\texttt{c0}--\texttt{c10}) and
+\texttt{a4var}, \texttt{b5var},
+\texttt{letter}, \texttt{legal}, \texttt{executive}.
+The orientation (landscape/portrait) of the input paper is
+also preserved again.
+
+The option format is:
+\Meta{crop mark format}\texttt{-}\Meta{output size}.
+The crop mark format is one of the following:
+\verb+tombow+ (default), \verb+tombo+ (without a job info),
+\verb+mentuke+ (do not print actual crop marks).
+
+\subsection{Disabling Job Info Printing}
+
+When you specify the output size explicitly, the crop mark format
+can be given at the same time, as described previously.
+When the output size is automatically determined, you can disable
+job info printing by \verb+notombowbanner+ option.
+
+\section{Customization of Crop Mark}
+
+The \textsf{pxgentombow} package provides some commands to
+customize crop mark format.
+
+\subsection{Banner content}
+
+Using \verb+\settombowbanner+, you can set the banner content.
+An example using \verb+\pdfcreationdate+ (pdf\TeX\ primitive)
+\begin{verbatim}
+ \documentclass[a4paper]{article}
+ \usepackage{gentombow}
+ \settombowbanner{\jobname\space (\pdfcreationdate)}
+ \begin{document}
+ The content
+ \end{document}
+\end{verbatim}
+will result in
+{\settombowbanner{\jobname\space (\pdfcreationdate)}%
+ \makeatletter\texttt{\the\@bannertoken}\makeatother}.
+The argument is an arbitrary token list.
+
+\subsection{Banner font}
+
+Using \verb+\settombowbannerfont+, you can change the font
+with which the banner is printed.
+\begin{verbatim}
+ \settombowbannerfont{cmss10 at 9pt}
+\end{verbatim}
+This feature internally calls the \TeX\ primitive \verb+\font+,
+and accepts all fonts supported by the engine. When Lua\TeX\ or
+Xe\TeX\ is used, a native OpenType font can also be given.
+
+\subsection{Crop mark line width}
+
+By default, the line width of crop marks is 0.1~pt.
+This can be change to 1~pt by \verb+\settombowwidth{1pt}+.
+The argument is an arbitrary dimension.
+
+\subsection{Bleed margin width}
+
+By default, the bleed margin width is 3~mm.
+This can be change to 5~mm by \verb+\settombowwidth{5mm}+.
+The argument is an arbitrary dimension.
+
+\subsection{Crop mark color}
+
+Set the color of crop marks. Package \textsf{xcolor} (recommended) or
+\textsf{xcolor} is required.
+For example, \verb+\settombowcolor{\color[cmyk]{0,1,0,0}}+ sets magenta.
+
+\section{Setting PDF page box (``digital tombow'')}
+
+This is an optional driver-dependent feature.
+When \textsf{gentombow} is required with the option \verb+pdfbox+,
+following page boxes are emitted to the output PDF file.
+The paper size (\verb+/MediaBox+) is also corrected.
+\begin{itemize}
+\item \verb+/TrimBox+: final paper size.
+\item \verb+/BleedBox+: paper size plus bleed margin.
+\item \verb+/CropBox+ and \verb+/ArtBox+ are not set.
+\end{itemize}
+Note: if the package \textsf{pdfx} is loaded with PDF/X mode,
+this optional feature is automatically enabled.
+Also, \verb+/CropBox+ is set explicitly.
+
+\section{Additional Notes}
+
+Here is some additional notes for use with several classes/packages.
+
+\subsection{Note for \textsf{BXjscls} users}
+
+When using \textsf{BXjscls} (by Takayuki YATO) with size option
+other than 10pt, please add \verb+nomag+ or \verb+nomag*+ to the
+class option. For example,
+\begin{verbatim}
+ \documentclass[a4paper,14pt]{bxjsarticle}
+ \usepackage{gentombow}
+\end{verbatim}
+will not work as expected (\textsf{gentombow} throws an error
+for safety).
+
+\subsection{Note about Layout Settings}
+
+You should not change \verb+\hoffset+ or \verb+\voffset+ to non-zero
+value, for the purpose of layout settings. Such settings will
+conflict with the feature of \textsf{gentombow} package.
+To set page layout correctly, you should adjust \verb+\oddsidemargin+
+or \verb+\topmargin+, or leave it to \textsf{geometry} package.
+
+Note: since the package \textsf{geometry} also has a feature to
+change the paper size (\verb+\paperwidth+, \verb+\paperheight+),
+please load \textsf{gentombow} after \textsf{geometry}.
+
+\section*{Change History}
+
+\begin{itemize}
+ \item 2017/12/17 v0.9 First CTAN release
+ \item 2018/03/16 v0.9e Add \verb+\settombowbanner+,
+ \verb+\settombowbannerfont+ and
+ \verb+\settombowwidth+.
+ \item 2018/05/17 v0.9g Add \verb+pdfbox+ option,
+ \verb+\settombowbleed+ and
+ \verb+\settombowcolor+.
+ \item 2018/08/20 v0.9h Add \texttt{hagaki} size for paper detection,
+ improve patches for \textsf{pdfpages}.
+ \item 2018/08/30 v0.9j Support \textsf{jsclasses}-style \verb+\mag+ employment
+ also with \verb+pdfbox+ option.
+ Fix a bug that \verb+\settombowbleed+ is not
+ considered by \verb+/TrimBox+.
+ \item 2019/07/21 v0.9k Support \textsf{pdfx} package.
+ \item 2020/10/14 v0.9l Import tombow-related patches from \textsf{plautopatch}.
+\end{itemize}
+
+\end{document}
diff --git a/macros/latex/contrib/gentombow/pxesopic.sty b/macros/latex/contrib/gentombow/pxesopic.sty
new file mode 100644
index 0000000000..567b9d0a2d
--- /dev/null
+++ b/macros/latex/contrib/gentombow/pxesopic.sty
@@ -0,0 +1,239 @@
+%
+% pxesopic.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the gentombow bundle.
+% https://github.com/aminophen/gentombow
+%
+% This package is expected to be compatible with
+% * eso-pic.sty
+% 2015/07/21 v2.0g -- 2020/09/27 v2.0i
+%
+% --------------------------------------------------------------
+% [Note]
+% The package ``pxesopic.sty'' relies heavily on internals
+% of ``plautopatch.sty''.
+% Also, ``pxesopic.sty'' is incompatible with ``memoir.cls''.
+% --------------------------------------------------------------
+%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{pxesopic}
+ [2020/10/11 v0.4c Patch to eso-pic for tombow]
+
+%% preparations
+\def\pxesop@pkgname{pxesopic}
+\def\pxesop@error{\PackageError\pxesop@pkgname}
+\def\pxesop@warn{\PackageWarningNoLine\pxesop@pkgname}
+\let\pxesop@debug\@gobble
+%\def\pxesop@debug#1{\typeout{\pxesop@pkgname: [DEBUG] #1}}% for debug
+
+\@ifclassloaded{memoir}{%
+ \pxesop@warn{This package should not be loaded with memoir.cls}}{}
+
+\@ifpackageloaded{eso-pic}{%
+ \pxesop@error{%
+ Package eso-pic is already loaded!\MessageBreak
+ Load pxesopic earlier}\@ehc
+}{}
+
+%% hooks
+\ifx\declare@file@substitution\@undefined
+ % LaTeX2e 2020-02-02 PL5 or older
+ \RequirePackage{filehook}
+ \let\pxesop@ExecuteAfterPackage=\AtEndOfPackageFile
+ \let\pxesop@ExecuteBeforePackage=\AtBeginOfPackageFile
+\else
+ % LaTeX2e 2020-10-01 or newer
+ \def\pxesop@ExecuteAfterPackage#1{\AddToHook{package/after/#1}}
+ \def\pxesop@ExecuteBeforePackage#1{\AddToHook{package/before/#1}}
+\fi
+
+%% the contents of \AtBeginShipout is dependent on \iftombow;
+%% delay execution of \AtBeginShipout inside ``eso-pic.sty''
+%% until \AtBeginDocument, to support both (u)pLaTeX kernel
+%% and ``gentombow.sty''
+\RequirePackage{atbegshi}% eso-pic requires atbegshi
+\ifx\pfmtname\@undefined\else
+ \ifx\AtBegShi@Output\@undefined
+ % LaTeX2e 2020-10-01: an emulation by ``atbegshi-ltx.sty''
+ % => pLaTeX2e 2020-10-01 natively supports it
+ \else
+ % older: the real ``atbegshi.sty'' is loaded
+ \IfFileExists{pxatbegshi.sty}{\RequirePackage{pxatbegshi}}{}
+ \fi
+\fi
+%
+\pxesop@ExecuteBeforePackage{eso-pic}{\pxesop@before}
+\pxesop@ExecuteAfterPackage{eso-pic}{\pxesop@after}
+%
+\def\pxesop@before{%
+ \let\pxesop@AtBeginShipout\AtBeginShipout
+ \def\AtBeginShipout##1{\def\pxesop@hook{##1}}% hide it
+ \pxesop@debug{\noexpand\AtBeginShipout disabled}%
+ \let\pxesop@before\relax
+}
+\def\pxesop@after{%
+ \let\AtBeginShipout\pxesop@AtBeginShipout % restore
+ \let\pxesop@AtBeginShipout\relax
+ \pxesop@debug{\noexpand\AtBeginShipout restored}%
+ \let\@unknownoptionerror\relax %% avoid an error
+ \pxesop@debug{\noexpand\@unknownoptionerror disabled}%
+ \let\pxesop@after\relax
+}
+%%
+
+%% load it; be careful not to cause unknown option error!
+\expandafter\ifx\csname @unknownoptionerror\endcsname
+ \pxesop@error{Failed to save \noexpand\@unknownoptionerror}\@ehc
+\fi
+\let\pxesop@unknownoptionerror\@unknownoptionerror
+%
+\chardef\pxesop@status\z@
+\@ifpackageloaded{plautopatch}{%
+ \expandafter\ifx\csname platpc@begin@eso-pic\endcsname\relax
+ % ``plautopatch.sty'' is loaded but the macro is \relax
+ % => means that ``pxesopic.sty'' is automatically loaded
+ \@ifl@t@r{\fmtversion}{2020/10/01}{%
+ \chardef\pxesop@status\@ne
+ }{}%
+ \fi
+}{}
+%
+%% pass all options to keyval-style ``eso-pic.sty''
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{eso-pic}}
+\ProcessOptions\relax
+\RequirePackage{eso-pic}
+%
+%% ensure internal dimensions added in ``eso-pic.sty'' v2.0i
+\ifx\ESO@tempdima\@undefined \newdimen\ESO@tempdima \fi
+\ifx\ESO@tempdimb\@undefined \newdimen\ESO@tempdimb \fi
+%
+%% recover the error
+\ifnum\pxesop@status>\z@ % auto
+ \def\pxesop@pkgtohook{eso-pic}%
+ % note that ``plautopatch.sty'' discards the hook
+ % on LaTeX2e 2020-02-02 PL5 or older
+ \ifx\declare@file@substitution\@undefined
+ \let\pxesop@pkgtohook\pxesop@pkgname
+ % throw an error for unsupported usage
+ % [FIXME] the error below is actually unnecessary when
+ % none of ``eso-pic.sty'' options is used; how to detect that?
+ \pxesop@error{Try loading \pxesop@pkgname\space by hand}\@ehc
+ \fi
+\else
+ \let\pxesop@pkgtohook\pxesop@pkgname
+\fi
+\pxesop@ExecuteAfterPackage\pxesop@pkgtohook{%
+ \let\@unknownoptionerror\pxesop@unknownoptionerror
+ \pxesop@debug{\noexpand\@unknownoptionerror restored}%
+}
+%%
+
+%% do it
+%-- similar to bounddvi.sty (checked 2020/10/08 v8.2)
+% detection of \iftombow availability is delayed until \AtBeginDocument,
+% to support both (u)pLaTeX kernel and ``gentombow.sty''
+% Note: this package does not consider changing \iftombow status
+% in the middle of a single document.
+\AtBeginDocument{\pxesop@do}
+\def\pxesop@do{%
+ \ifx\tombowtrue\@undefined
+ \pxesop@debug{Tombow feature unavailable, no patch applied}%
+ \let\pxesop@switch\pxesop@orig % skip if-tokens and restore
+ \fi
+ \pxesop@switch}
+%
+\def\pxesop@switch{%
+ \iftombow \pxesop@ensure@stock \pxesop@new
+ \else \pxesop@orig \fi}
+%
+\def\pxesop@ensure@stock{%
+ %\iftombow
+ % if \stockwidth/\stockheight are not available,
+ % define them now
+ \ifx\stockwidth\@undefined \newdimen\stockwidth \fi
+ \ifx\stockheight\@undefined \newdimen\stockheight \fi
+ % if \stockwidth already has effective value, do nothing;
+ % otherwise assume pLaTeX-style tombow and set it to
+ % \paperwidth + 2in (similar for \stockheight)
+ \ifdim\stockwidth>\z@\else
+ \stockwidth\paperwidth \advance\stockwidth2in
+ \fi
+ \ifdim\stockheight>\z@\else
+ \stockheight\paperheight \advance\stockheight2in
+ \fi
+ %\fi
+}
+%--
+%
+%% for \iftombow is FALSE => restore from ``eso-pic.sty''
+\expandafter\def\expandafter\pxesop@orig\expandafter{%
+ \expandafter\AtBeginShipout\expandafter{\pxesop@hook}}
+%
+%% for \iftombow is TRUE => redefine by ``pxesopic.sty''
+\def\pxesop@new{%
+ %% \AtStockLowerLeft: based on TRUE of \ESO@isMEMOIR
+ \renewcommand\AtStockLowerLeft[1]{%
+ \begingroup
+ \ESO@tempdima=-\stockwidth
+ \advance\ESO@tempdima\paperwidth
+ \ESO@tempdimb=-\stockheight
+ \advance\ESO@tempdimb\paperheight
+ %% specific BEGIN
+ \advance\ESO@tempdima 1in\relax
+ \advance\ESO@tempdimb 1in\relax
+ \advance\ESO@tempdima \hoffset\relax
+ \advance\ESO@tempdimb \voffset\relax
+ %% specific END
+ \AtPageLowerLeft{%
+ \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){##1}%
+ }%
+ \endgroup
+ }% ===
+ %% \AtStockUpperLeft: based on TRUE of \ESO@isMEMOIR
+ \renewcommand\AtStockUpperLeft[1]{%
+ \AtStockLowerLeft{%
+ \put(0,\LenToUnit{\stockheight}){##1}%
+ }%
+ }% ===
+ %% \AtStockCenter: based on TRUE of \ESO@isMEMOIR
+ \renewcommand\AtStockCenter[1]{%
+ \AtStockLowerLeft{%
+ \put(\LenToUnit{.5\stockwidth},\LenToUnit{.5\stockheight}){##1}%
+ }%
+ }%
+ %% \AtTextUpperLeft: same as FALSE of \ESO@isMEMOIR
+ % (no change)
+ %
+ %% \AtBeginShipout: based on TRUE of \ESO@isMEMOIR
+ \AtBeginShipout{%
+ \ESO@tempdima=\dimexpr(\stockwidth-\paperwidth)/2\relax
+ \ESO@tempdimb=-\dimexpr(\stockheight+\paperheight)/2\relax
+ \ifESO@texcoord
+ \advance\ESO@tempdimb\paperheight % [FIXME] not sure!
+ \fi
+ %% specific BEGIN
+ \advance\ESO@tempdima -\hoffset\relax
+ \advance\ESO@tempdimb \voffset\relax
+ %% specific END
+ \nointerlineskip
+ \AtBeginShipoutUpperLeft{%
+ \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){%
+ \ESO@HookIIIBG\ESO@HookIBG\ESO@HookIIBG
+ \global\let\ESO@HookIIBG\@empty
+ }%
+ }%
+ \AtBeginShipoutUpperLeftForeground{%
+ \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){%
+ \ESO@HookIFG\ESO@HookIIFG\ESO@HookIIIFG
+ \global\let\ESO@HookIIFG\@empty
+ }%
+ }%
+ }% ===
+}
+%%
+
+\endinput
+%% EOF
diff --git a/macros/latex/contrib/gentombow/pxgentombow.pdf b/macros/latex/contrib/gentombow/pxgentombow.pdf
new file mode 100644
index 0000000000..d30a4509e4
--- /dev/null
+++ b/macros/latex/contrib/gentombow/pxgentombow.pdf
Binary files differ
diff --git a/macros/latex/contrib/gentombow/pxgentombow.sty b/macros/latex/contrib/gentombow/pxgentombow.sty
new file mode 100644
index 0000000000..bd94b4bcee
--- /dev/null
+++ b/macros/latex/contrib/gentombow/pxgentombow.sty
@@ -0,0 +1,16 @@
+%
+% pxgentombow.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the gentombow bundle.
+% https://github.com/aminophen/gentombow
+%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{pxgentombow}
+ [2020/10/14 v0.9l Generate crop mark 'tombow']
+\PackageWarningNoLine{pxgentombow}{%
+ Package `pxgentombow' is now superseded by\MessageBreak
+ `gentombow', use `gentombow' instead}
+\RequirePackageWithOptions{gentombow}% load it
+\endinput
diff --git a/macros/latex/contrib/gentombow/pxgentombow.tex b/macros/latex/contrib/gentombow/pxgentombow.tex
new file mode 100644
index 0000000000..8a8c2616bd
--- /dev/null
+++ b/macros/latex/contrib/gentombow/pxgentombow.tex
@@ -0,0 +1,25 @@
+%# -*- coding: utf-8 -*-
+\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016)
+ \epTeXinputencoding utf8 % ensure utf-8 encoding for platex
+\fi
+
+\documentclass[a4paper]{jsarticle}
+\usepackage{doc}
+\usepackage{pxgentombow}
+\usepackage{bounddvi}
+\GetFileInfo{pxgentombow.sty}
+\title{Package \textsf{pxgentombow}}
+\author{Hironobu Yamashita}
+\date{2018年5月17日}
+\begin{document}
+
+\maketitle
+
+\begin{center}
+The package \textsf{pxgentombow} is now superseded by \textsf{gentombow}!
+\end{center}
+
+\textsf{pxgentombow}パッケージは、上位版である\textsf{gentombow}パッケージに
+統一されました。代わりに\textsf{gentombow}パッケージを使用してください。
+
+\end{document}
diff --git a/macros/latex/contrib/gentombow/pxpdfpages.sty b/macros/latex/contrib/gentombow/pxpdfpages.sty
new file mode 100644
index 0000000000..ad86ea819b
--- /dev/null
+++ b/macros/latex/contrib/gentombow/pxpdfpages.sty
@@ -0,0 +1,72 @@
+%
+% pxpdfpages.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the gentombow bundle.
+% https://github.com/aminophen/gentombow
+%
+% This package is expected to be compatible with
+% * pdfpages.sty
+% (2015/07/19 v0.5a -- 2020/01/28 v0.5q)
+%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{pxpdfpages}
+ [2020/10/11 v0.4c Patch to pdfpages for tombow]
+
+%% preparations
+\def\pxpdpg@pkgname{pxpdfpages}
+\def\pxpdpg@warn{\PackageWarningNoLine\pxpdpg@pkgname}
+\def\pxpdpg@info{\PackageInfo\pxpdpg@pkgname}
+\let\pxpdpg@debug\@gobble
+%\def\pxpdpg@debug#1{\typeout{\pxpdpg@pkgname: [DEBUG] #1}}% for debug
+
+%% load it
+\RequirePackageWithOptions{pdfpages}% pdfpages requires atbegshi
+\ifx\pfmtname\@undefined\else
+ \ifx\AtBegShi@Output\@undefined
+ % LaTeX2e 2020-10-01: an emulation by ``atbegshi-ltx.sty''
+ % => pLaTeX2e 2020-10-01 natively supports it
+ \else
+ % older: the real ``atbegshi.sty'' is loaded
+ \IfFileExists{pxatbegshi.sty}{\RequirePackage{pxatbegshi}}{}
+ \fi
+\fi
+
+%% do it
+%-- similar to bounddvi.sty (checked 2020/10/08 v8.2)
+% detection of \iftombow availability is delayed until \AtBeginDocument,
+% to support both (u)pLaTeX kernel and ``gentombow.sty''
+\AtBeginDocument{\pxpdpg@do}
+\def\pxpdpg@do{%
+ \ifx\tombowtrue\@undefined
+ \pxpdpg@debug{Tombow feature unavailable, no patch applied}%
+ \let\pxpdpg@switch\relax % do nothing
+ \fi
+ \pxpdpg@switch}
+%
+\def\pxpdpg@switch{\pxpdpg@patch@pdfpages}
+
+%% patch internal for pdfpages to work with tombow
+%-- Note: this code should be copied to gentombow.sty!
+\def\pxpdpg@patch@pdfpages{%
+ \RequirePackage{etoolbox}
+ \patchcmd{\AM@output}{%
+ \setlength{\@tempdima}{\AM@xmargin}%
+ \edef\AM@xmargin{\the\@tempdima}%
+ \setlength{\@tempdima}{\AM@ymargin}%
+ \edef\AM@ymargin{\the\@tempdima}%
+ }{%
+ \setlength{\@tempdima}{\AM@xmargin\iftombow+1in\fi}%
+ \edef\AM@xmargin{\the\@tempdima}%
+ \setlength{\@tempdima}{\AM@ymargin\iftombow-1in\fi}%
+ \edef\AM@ymargin{\the\@tempdima}%
+ }%
+ {\pxpdpg@info{Patch for pdfpages applied}}%
+ {\pxpdpg@warn{Patch for pdfpages failed}}%
+}
+
+%% all done
+
+\endinput
diff --git a/macros/latex/contrib/gentombow/pxtextpos.sty b/macros/latex/contrib/gentombow/pxtextpos.sty
new file mode 100644
index 0000000000..02cd5202e2
--- /dev/null
+++ b/macros/latex/contrib/gentombow/pxtextpos.sty
@@ -0,0 +1,108 @@
+%
+% pxtextpos.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the gentombow bundle.
+% https://github.com/aminophen/gentombow
+%
+% This package is expected to be compatible with
+% * textpos.sty
+% 2005/10/13 v1.6a -- 2019/04/15 v1.9.1
+%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{pxtextpos}
+ [2020/10/11 v0.4b Patch to textpos for tombow]
+
+%% preparations
+\def\pxtxtpos@pkgname{pxtextpos}
+\def\pxtxtpos@warn{\PackageWarningNoLine\pxtxtpos@pkgname}
+\let\pxtxtpos@debug\@gobble
+%\def\pxtxtpos@debug#1{\typeout{\pxtxtpos@pkgname: [DEBUG] #1}}% for debug
+
+%% load it
+\RequirePackageWithOptions{textpos}
+% textpos requires everyshi, only if both conditions are met:
+% (1) \fmtversion is **older** than 2020/10/01
+% (2) \ifTP@abspos == \iftrue
+% [TODO] tate-mode support is incomplete!
+\ifx\pfmtname\@undefined\else
+ \ifx\@EveryShipout@Output\@undefined
+ % LaTeX2e 2020-10-01: an emulation by ``everyshi-ltx.sty''
+ % => pLaTeX2e 2020-10-01 natively supports it
+ \else
+ % older: the real ``everyshi.sty'' is loaded
+ \IfFileExists{pxeveryshi.sty}{\RequirePackage{pxeveryshi}}{}
+ \fi
+\fi
+
+%% do it
+%-- similar to bounddvi.sty (checked 2020/10/08 v8.2)
+% detection of \iftombow availability is delayed until \AtBeginDocument,
+% to support both (u)pLaTeX kernel and ``gentombow.sty''
+\AtBeginDocument{\pxtxtpos@do}
+\def\pxtxtpos@do{%
+ \ifx\tombowtrue\@undefined
+ \pxtxtpos@debug{Tombow feature unavailable, no patch applied}%
+ \let\pxtxtpos@switch\relax % do nothing
+ \fi
+ \pxtxtpos@switch}
+%
+\def\pxtxtpos@switch{%
+ \let\textblockorigin\pxtxtpos@textblockorigin
+ \ifTP@abspos\textblockorigin{0pt}{0pt}\fi %% reset
+}
+
+%% known definition
+\def\pxtxtpos@textblockorigin#1#2{%
+ \ifTP@abspos
+ \TP@ox=-1in \addtolength\TP@ox{#1}
+ \TP@oy=-1in \addtolength\TP@oy{#2}
+ \ifTP@chatter\typeout{TextBlockOrigin set to #1 x #2}\fi
+ \else
+ \PackageError{textpos}
+ {The \protect\textblockorigin\space command\MessageBreak
+ may only be used if the package was given\MessageBreak
+ the`absolute' option when it was invoked}
+ {If you want to use the \protect\textblockorigin\space command, then
+ \MessageBreak
+ invoke the package with the syntax\MessageBreak
+ \protect\usepackage[absolute]{textpos}}
+ \fi
+}
+\@onlypreamble\pxtxtpos@textblockorigin
+
+%% check definition
+\ifx\textblockorigin\pxtxtpos@textblockorigin\else
+ \pxtxtpos@warn{%
+ Command \noexpand\textblockorigin is beyond my knowledge.\MessageBreak
+ I will apply the patch anyway, but it may break:\MessageBreak
+ Please report to the author of `\pxtxtpos@pkgname.sty'}
+\fi
+
+%% new definition
+\def\pxtxtpos@textblockorigin#1#2{%
+ \ifTP@abspos
+ \TP@ox=-1in \addtolength\TP@ox{#1}
+ \TP@oy=-1in \addtolength\TP@oy{#2}
+ %%% addition
+ \iftombow
+ \addtolength\TP@ox{1in}\addtolength\TP@oy{1in}
+ \fi
+ %%%
+ \ifTP@chatter\typeout{TextBlockOrigin set to #1 x #2}\fi
+ \else
+ \PackageError{textpos}
+ {The \protect\textblockorigin\space command\MessageBreak
+ may only be used if the package was given\MessageBreak
+ the`absolute' option when it was invoked}
+ {If you want to use the \protect\textblockorigin\space command, then
+ \MessageBreak
+ invoke the package with the syntax\MessageBreak
+ \protect\usepackage[absolute]{textpos}}
+ \fi
+}
+
+\endinput
+%% EOF
diff --git a/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.cls b/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.cls
deleted file mode 100644
index b724f105d3..0000000000
--- a/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.cls
+++ /dev/null
@@ -1,289 +0,0 @@
-% kfupm-math-exam.cls
-% Department of Mathematics
-% King Fahd University of Petroleum and Minerals
-% A LaTeX2e document class for preparing the exams of the department of mathematics, KFUPM.
-
-% --- METADATA -----------------------------------------------------------------
-\def\fileversion{0.1.0}
-\def\filedate{2022/07/25}
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{kfupm-math-exam}[\filedate\space Version \fileversion\space by
- Department of Mathematics, KFUPM]
-% --- OPTION PROCESSSING -------------------------------------------------------
-\RequirePackage{kvoptions} \SetupKeyvalOptions{
- family = kfupmmathexam,
- prefix = kfupmmathexam@,
- setkeys = \kvsetkeys
-}
-\DeclareStringOption[212]%
- {term}
-\DeclareStringOption[Exam]%
- {topic}
-\DeclareStringOption[King Fahd University of Petroleum \& Minerals]%
- {university}
-\DeclareStringOption[Department of Mathematics]%
- {dept}
-\DeclareStringOption[MATH101 CALCULUS I]%
- {course}
-\DeclareStringOption[3]%
- {quartile}
-\DeclareStringOption[1]%
- {examtitle}
-\DeclareStringOption[March 9, 2022]%
- {examdate}
-\DeclareStringOption[4]%
- {numofversions}
-\DeclareStringOption[15]%
- {numofquestions}
-\DeclareStringOption[5]%
- {numofoptions}
-\DeclareStringOption[0123456]%
- {studentnumber}
-\DeclareStringOption[snumver@kfupm.edu.sa]%
- {email}
-\DeclareStringOption[1]%
- {firstexercise}
-\DeclareStringOption[3.5cm]{betweenquestions}
-\DeclareStringOption[0.762cm]{spaceafterbody}
-\DeclareStringOption[0.5cm]{betweenoptions}
-% pass unrecognized options to `article` class
-\DeclareDefaultOption{%
- \PassOptionsToClass{\CurrentOption}{article}%
-}
-% process all options
-\ProcessKeyvalOptions{kfupmmathexam}
-% load parent class with some default options
-\LoadClass[a4paper, 12pt]{article}
-% --- PACKAGES AND SETUP -------------------------------------------------------
-\RequirePackage[
- paperheight=33cm,
- paperwidth=21.5cm,
- headheight = 20pt,
- margin = 2cm,
- tmargin = \dimexpr 2cm - 10pt \relax,
- ]{geometry} % set up nicer margins
- \addtolength{\footskip}{20pt}
-\RequirePackage{fancyhdr} % for headers and footers
-\RequirePackage{graphicx} % for including figures
-\RequirePackage{amsmath} % use AMS math package
-\RequirePackage{amssymb} % use AMS symbols
-\RequirePackage{amsthm} % for writing proofs
-\RequirePackage{array} % for setting up arguments to columns
-\RequirePackage{booktabs} % for professional tables
-\RequirePackage%
- [tworuled, linesnumbered, noend, noline]%
- {algorithm2e} % for typesetting pseudo-code
-\RequirePackage{xcolor} % for colored text (comments in algorithms)
-\RequirePackage{trimspaces, xstring} % for multiple author parsing
-\RequirePackage[shortlabels]{enumitem} \labelsep=.75cm
-\RequirePackage{mathrsfs}
-\RequirePackage{xparse}
-\RequirePackage{environ}
-\RequirePackage{pgfplots}
-\pgfplotsset{compat=newest}
-\RequirePackage{tcolorbox}
-
-% option post-processing
-\newcommand{\kme@temp}{}
-\newcommand{\kme@sub}[4]{%
- \ifnum#3 = 1\relax%
- \ifnum#4 = 1\relax%
- \renewcommand{\kme@temp}{#1}%
- \else%
- \StrBefore{#1}{#2}[\kme@temp]%
- \fi%
- \else%
- \ifnum#3 = #4\relax%
- \StrBehind[\numexpr#3 - 1\relax]{#1}{#2}[\kme@temp]%
- \else%
- \StrBetween[\numexpr#3 - 1\relax,#3]{#1}{#2}{#2}[\kme@temp]%
- \fi%
- \fi%
- \expandafter\trim@spaces\expandafter{\kme@temp}%
-}
-\newcommand{\kme@authorProcessed}[1]{%
- \kme@sub{\kfupmmathexam@name}{;}{#1}{\arabic{kme@numAuthors}}~%
- (\kme@sub{\kfupmmathexam@studentnumber}{;}{#1}{\arabic{kme@numAuthors}})\\%
- \texttt{\kme@sub{\kfupmmathexam@email}{;}{#1}{\arabic{kme@numAuthors}}}%
- % if there are more authors, do a recursive call for the next one
- \ifnum#1 < \arabic{kme@numAuthors}\relax\and\kme@authorProcessed{\numexpr#1 + 1\relax}\fi%
-}
-\newcommand{\kme@authorsProcessed}{%
- % count number of authors; one more than number of semicolons
- \StrCount{\kfupmmathexam@name}{;}[\kme@numAuthors]%
- \newcounter{kme@numAuthors}%
- \setcounter{kme@numAuthors}{\kme@numAuthors}%
- \stepcounter{kme@numAuthors}%
- % produce output
- \kme@authorProcessed{1}%
-}
-% look for figures in the figures directory
-\graphicspath{{figures/}}
-% set up headers and footers; same for all pages
-\setlength{\headheight}{10pt}
-\newcommand{\kfupmmathexam@setupHF}{%
- \fancyhf{}
- \fancyhead[L]{\sffamily \small KFUPM }
- \fancyhead[C]{\sffamily Page \thepage ~of \pageref{LastPage}}
- \fancyhead[R]{\sffamily Term \kfupmmathexam@term}
- \fancyfoot[L]{\sffamily /\kfupmmathexam@dept}
- \fancyfoot[R]{\sffamily\bfseries\thepage}
- \renewcommand{\headrulewidth}{0.5pt}
- \renewcommand{\footrulewidth}{0.5pt}
-}
-\fancypagestyle{plain}{\kfupmmathexam@setupHF{}} \kfupmmathexam@setupHF{}
-\pagestyle{fancy}
-\NewDocumentCommand{\coverpage}{O{\kfupmmathexam@course} O{\kfupmmathexam@examtitle} O{\kfupmmathexam@term} O{\kfupmmathexam@examdate}}{%
-\thispagestyle{empty}
-\begin{center}
- \begin{large}
- Kink Fahd University of Petroleum and Minerals\\
- Mathematics\\
- \vspace*{2cm}
- {\bf #1} \\
- {\bf #2} \\
- {\bf #3} \\
- {\bf #4} \\
-
- \vspace*{3cm}
- {\bf{\Huge{\fbox{EXAM COVER }}}}\\
- \vspace*{2cm}
- {\bf Number of versions: \kfupmmathexam@numofversions } \\
- {\bf Number of questions: \kfupmmathexam@numofquestions } \\
- {\bf Number of Answers: \kfupmmathexam@numofoptions } \\
-
- \vspace*{0.2cm}
-
- \end{large}
-
- \vfill
-
- \tiny{This exam was prepared using EXAM SHUFFLER}
- \tiny{For questions send an email to Dr. Mohammed Alshahrani (mshahrani@kfupm.edu.sa) }
-\end{center}
-\newpage
-}
-\newcommand{\versioncover}[1]{
-\thispagestyle{empty}
-\begin{center}
- \begin{large}
- Kink Fahd University of Petroleum and Minerals \\
- Mathematics \\
- \vspace*{4.5cm}
- {\bf \fbox{ \codestr{CODE}{#1} } } \hfill {\bf \fbox{ \codestr{CODE}{#1} }} \\
- {\bf math333 } \\
- {\bf exam 1 } \\
- {\bf 182 } \\
- {\bf monday march 13 } \\
- {\bf Net Time Allowed: 120 minutes } \\
-
- \vspace*{0.2cm}
-
- \end{large}
-\end{center}
-\ifthenelse{\equal{#1}{0}}{
-\begin{center}
-\vspace*{6cm}
-{\bf {\Huge{MASTER VERSION}}} \\
-\end{center}
-}{
-\large{Name: }\hrulefill
-
-\vspace{3mm}
-
-\large{ID: } \hrulefill \large{ Sec: } \hrulefill \large{.}
-
-\vspace{1cm}
-
-\large{\bf{Check that this exam has {\underline{ \thenumberofquestions }} questions.}}
-
-\vspace{1cm}
-
-\getInstructions
-}
-\newpage
-
-\renewcommand{\thepage}{\noindent Term 182, math333, exam 1 \hfill Page {\bf \arabic{page} of \pagecount{\thenumberofpages} } \hfill {\bf \fbox{ \codestr{CODE}{#1} }}}
-\setcounter{page}{1}
-
-}
-% ensure that the title is inserted in the document
-\title{\coverpage}
-\author{}
-\date{}
-\AtBeginDocument{\pagestyle{myheadings}}%\maketitle
-
-% add some keywords
-\SetKw{And}{and} \SetKw{Or}{or} \SetKw{To}{to}
-% make it possible to not have line numbers on a single line
-\let\oldnl\nl
-\newcommand{\nonl}{\renewcommand{\nl}{\let\nl\oldnl}}
-% style algorithm captions
-\newcommand{\kfupmmathexam@capsty}[1]{\!}
-\SetAlCapSty{kfupmmathexam@capsty} \SetAlCapNameFnt{\scshape\hspace{.69em}}
-% get rid of semicolons
-\DontPrintSemicolon
-% comment formatting
-\newcommand\agacommfont[1]{\footnotesize\ttfamily\textcolor{gray}{#1}}
-\SetCommentSty{agacommfont}
-% --- USEFUL MACROS ------------------------------------------------------------
-\newcommand*{\R}{{\mathbb R}}
-\newcommand*{\N}{{\mathbb N}}
-\newcommand*{\Z}{{\mathbb Z}}
-\newcommand*{\Q}{{\mathbb Q}}
-
-% lengths and commands of the exam options
-\newcount\numberofversions
-\numberofversions=\kfupmmathexam@numofversions
-\advance\numberofversions +1
-\newcounter{numberofquestions}
-\setcounter{numberofquestions}{\kfupmmathexam@numofquestions}
-\newcounter{numberofpages}
-\setcounter{numberofpages}{0}
-% --- define new database for exam questions ----
-\newcounter{examcodecounter}
-\setcounter{examcodecounter}{1}
-
-
-\ExplSyntaxOn
-\str_new:N \l_alphabets_str
-\str_set:Nn \l_alphabets_str {abcdefghigklmnopqrstuvwxuz}
-\newcommand{\instructions}[1]{
- \tl_set:Nn \l_tmpa_str {#1}
-}
-\newcommand{\getInstructions}[1]{
- \tl_use:N \l_tmpa_str
-}
-\int_new:N \l_tmppages_int
-\int_set:Nn \l_tmppages_int {0}
-\cs_set:Npn \l_calc_pages_int:n #1 {
- \int_set:Nn \l_tmppages_int {\int_div_truncate:nn {#1}{2}}
- \int_set:Nn \l_tmppages_int {\int_compare:nNnTF {0}={\int_mod:nn {#1}{2}}{\l_tmppages_int}{\l_tmppages_int+1}}
- \int_use:N \l_tmppages_int
-}
-\newcommand{\pagecount}[1]{
- \l_calc_pages_int:n {15}
-}
-
-
-\str_new:N \l_exam_code_str
-\int_new:N \l_exam_version_int
-\cs_set:Npn \l_concat_codenumber_str:nn #1#2 {
- \int_set:Nn \l_exam_version_int {100+#2}
- \str_clear_new:N \l_partone_str
- \str_clear_new:N \l_parttwo_str
- \str_set:Nn \l_partone_str {#1}
- \str_set:Nx \l_parttwo_str {\int_use:N \l_exam_version_int}
- \str_set:Nx \l_parttwo_str {\str_range:Nnn \l_parttwo_str {-2}{-1}}
- \str_concat:NNN \l_exam_code_str \l_partone_str \l_parttwo_str
- \str_use:N \l_exam_code_str
-}
-\newcommand{\codestr}[2]{
- \int_compare:nNnTF {0}={#2}{MASTER}{
- \l_concat_codenumber_str:nn {#1}{#2}
- }
-}
-
-% working with list
-
-\ExplSyntaxOff
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index 2d5662a655..a2dff6588f 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
index 4d6357e042..5f7796fa90 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
@@ -9,8 +9,20 @@
\renewcommand\ttdefault{lmtt}
\usepackage[scaled=0.875]{cabin}
\usepackage[build]{ProfLycee}
+\usepackage{tkz-euclide}
\usetikzlibrary{hobby}
\usepackage{siunitx}
+\usepackage{fancyhdr}
+%fancy
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+%\lhead{\sffamily \small [ProfLycee]}
+%\chead{\entete{\classe{} - \annee}}
+%\rhead{\sffamily \small - \thepage{} -}
+\lfoot{\sffamily \small [ProfLycee]}
+\cfoot{\sffamily \small - \thepage{} -}
+\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
+
\usepackage{graphics}
\usepackage{hvlogos}
\usepackage{simplekv}
@@ -42,8 +54,8 @@
\setlength{\parindent}{0pt}
\definecolor{LightGray}{gray}{0.9}
-\def\PLversion{1.1.7}
-\def\PLdate{30 Juin 2022}
+\def\PLversion{1.1.8}
+\def\PLdate{01 Août 2022}
\tcbset{vignettes/.style={%
nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,%
@@ -170,17 +182,22 @@
\begin{document}
-\thispagestyle{empty}
+%\AddToShipoutPicture{%
+%\begin{tikzpicture}[remember picture,overlay]
+% \node [anchor=center,yshift=1cm,xshift=-1.5cm] (box\thepage) at (current page.south east){\hyperlink{matoc}{\LARGE\faArrowAltCircleUp[regular]}};
+%\end{tikzpicture}}
+
+\pagestyle{fancy}
\maketitle
-{\Large \bfseries Résumé : }
+\thispagestyle{empty}
+
+{\Large {\bfseries Résumé} : Quelques commandes pour faciliter l'utilisation de \LaTeX{} pour les enseignants de mathématiques en lycée.}
\medskip
-\noindent Quelques commandes pour faciliter l'utilisation de \LaTeX{} pour les enseignants de mathématiques en lycée.
-
-Quelques commandes pour des courbes \textit{lisses} avec gestion des extrema et des dérivées.
+\noindent Quelques commandes pour des courbes \textit{lisses} avec gestion des extrema et des dérivées.
Quelques commandes pour simuler une fenêtre de logiciel de calcul formel, en \TikZ.
@@ -239,6 +256,9 @@ Quelques commandes pour convertir bin/dec/hex avec certains détails.
\newpage
+\phantomsection
+\hypertarget{matoc}{}
+
\tableofcontents
\newpage
@@ -268,7 +288,7 @@ Le {package} \ctex{ProfLycee} charge les {packages} :
\item \ctex{xcolor} avec les options \textsf{[table,svgnames]} ;
\item \ctex{tikz}, \ctex{pgf}, \ctex{xfp} ;
\item \ctex{xparse}, \ctex{xkeyval}, \ctex{xstring}, \ctex{simplekv} ;
- \item \ctex{listofitems}, \ctex{xintexpr} ;
+ \item \ctex{listofitems}, \ctex{xintexpr} et \ctex{xintbinhex} ;
\item \ctex{tabularray}, \ctex{fontawesome5}, \ctex{tcolorbox}.
\end{itemize}
\end{codeinfo}
@@ -381,7 +401,8 @@ Le {package}, qui s'enrichira peut-être au fil du temps permet -- pour le momen
\item créer un cartouche \textit{à la manière de} Capytale ;
\item créer rapidement un pavé droit ou un tétraèdre en \TikZ, avec gestion des nœuds ;
\item créer rapidement un ensemble d'éléments, avec gestion des espaces ;
- \item créer, dans un environnement \TikZ, la \og toile \fg{} pour une suite récurrente.
+ \item créer, dans un environnement \TikZ, la \og toile \fg{} pour une suite récurrente :
+ \item etc
\end{itemize}
\end{codeidee}
@@ -1639,7 +1660,7 @@ Pour \textit{illustrer} un peu les \Cle{clés}, un petit schéma, avec les diff
\subsection{Fractions}
\begin{codeidee}
-L'idée est d'obtenir une commande pour simplifier un calcul sous forme de fraction irréductible.
+L'idée est d'obtenir une commande pour \textit{simplifier} un calcul sous forme de fraction irréductible.
\end{codeidee}
\begin{codetex}[listing only]
@@ -2039,7 +2060,7 @@ Plusieurs \Cle{Clés} sont disponibles pour cette commande :
\subsection{Équations trigos}
\begin{codeinfo}
-En plus des \Cle{Clés} précédentes, il existe un complément pour visualiser des solutions d'équations simples du type $\cos(x)=\ldots$ ou $\sin(x)=\ldots$.
+En plus des \Cle{Clés} précédentes, il existe un complément pour \textit{visualiser} des solutions d'équations simples du type $\cos(x)=\ldots$ ou $\sin(x)=\ldots$.
\end{codeinfo}
\begin{codecles}
@@ -2250,7 +2271,7 @@ Pour la clé \Cle{code}, il est construit par le type (\textsf{a} pour affine ou
\begin{codeidee}
Ces schémas peuvent être de plus utilisés, via la commande \ctex{aidesignetkztabPL} pour illustrer les signes obtenus dans un tableau de signes présentés grâce au package \ctex{tkz-tab}.
-Pour des raisons interne, le fonctionnement de la commande \ctex{aidesignetkztabPL} est légèrement différent et, pour des raisons que j'ignore, le code est légèrement différent en \textit{interne} (avec une \textit{déconnexion} des caractères \textsf{:} et \textsf{\textbackslash}) pour la librairie \TikZ{} \ctex{calc} puisse fonctionner (mystère pour le moment\ldots)
+Pour des raisons internes, le fonctionnement de la commande \ctex{aidesignetkztabPL} est légèrement différent et, pour des raisons que j'ignore, le code est légèrement différent en \textit{interne} (avec une \textit{déconnexion} des caractères \textsf{:} et \textsf{\textbackslash}) pour que la librairie \TikZ{} \ctex{calc} puisse fonctionner (mystère pour le moment\ldots)
\end{codeidee}
\begin{codetex}[listing only]
@@ -2641,7 +2662,7 @@ L'idée est de \textit{compléter} les possibilités offertes par le package \ct
\begin{itemize}
\item décimal en binaire avec blocs de 4 chiffres en sortie ;
- \item conversion binaire ou hexédacimal en décimal avec écriture polynomiale.
+ \item conversion binaire ou hexadécimal en décimal avec écriture polynomiale.
\end{itemize}
\end{codeidee}
@@ -2698,7 +2719,7 @@ Le formatage est géré par \ctex{sinuitx}, le mieux est donc de positionner la
\smallskip
-Les nombres écrits en binaire sont, par défaut, présenter en bloc de 4 chiffres.
+Les nombres écrits en binaire sont, par défaut, présentés en bloc(s) de 4 chiffres.
\end{codecles}
\begin{codetex}[listing only]
@@ -2767,8 +2788,6 @@ $\PLconvbinhex[trait=1.5pt]{110011111}$
$\PLconvbinhex[details=false]{110011111}$
%conversion sans détails et sans affichage de la base
$\PLconvbinhex[affbase=false,details=false]{110011111}$
-%conversion avec détails et sans affichage
-$\PLconvbinhex[affbase=false]{110011111}$
\end{codetex}
\begin{codesortie}
@@ -2779,8 +2798,6 @@ $\PLconvbinhex[trait=1.5pt]{110011111}$
$\PLconvbinhex[details=false]{110011111}$
$\PLconvbinhex[affbase=false,details=false]{110011111}$
-
-$\PLconvbinhex[details=false]{110011111}$
\end{codesortie}
\pagebreak
@@ -2805,7 +2822,7 @@ L'idée est ici de présenter la conversion, grâce à l'écriture polynômiale
Quelques \Cle{clés} sont disponibles pour cette commande :
\begin{itemize}
- \item la clé \Cle{basedep} qi est la base de départ (2 ou 16 !) ; \hfill{}défaut \Cle{2}
+ \item la clé \Cle{basedep} qui est la base de départ (2 ou 16 !) ; \hfill{}défaut \Cle{2}
\item le booléen \Cle{affbase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true}
\item le booléen \Cle{details} qui permet d'afficher ou le détail par bloc de 4 ; \hfill{}défaut \Cle{true}
\item le booléen \Cle{zeros} qui affiche les chiffres 0 dans la somme. \hfill{}défaut \Cle{true}
@@ -2836,14 +2853,87 @@ $\PLconvtodec[zeros=false]{110011}$
$\PLconvtodec[basedep=16,details=false]{AC0DC}$
-$\PLconvtodec[zeros=false,basedep=16,details=false]{AC0DC}$
+$\PLconvtodec[zeros=false,basedep=16]{AC0DC}$
\end{codesortie}
\newpage
+\section{Style \og main levée \fg{} en \TikZ}
+
+\subsection{Idée}
+
+\begin{codeidee}
+L'idée est de \textit{proposer} un style \textit{tout prêt} pour simuler un tracé, en \TikZ, à \og main levée \fg.
+
+Il s'agit d'un style \textit{basique} utilisant la librairie \ctex{decorations} avec \textsf{random steps}.
+\end{codeidee}
+
+\begin{codetex}[listing only]
+\tikzset{%
+ mainlevee/.style args={#1et#2}{decorate,decoration={random steps, segment length=#1,amplitude=#2}},
+ mainlevee/.default={5mm et 0.6pt}
+}
+\end{codetex}
+
+\subsection{Utilisation basique}
+
+\begin{codeinfo}
+Il s'agit ni plus ni moins d'un style \TikZ{} à intégrer dans les tracés et constructions \TikZ !
+\end{codeinfo}
+
+\begin{codecles}
+Concernant le style en lui-même, deux paramètres peuvent être précisés via \Cle{mainlevee=\#1 et \#2} :
+
+\begin{itemize}
+ \item \Cle{\#1} correspond à l'option \textsf{segment length} (longueur des segments \textit{types}) ;\hfill{}défaut \Cle{5mm}
+ \item \Cle{\#2} correspond à l'option \textsf{amplitude} (amplitude maximale de la \textit{déformation}).\hfill{}défaut \Cle{0.6pt}
+\end{itemize}
+
+Les valeurs \Cle{mainlevee=5mm et 0.6pt} donnent des résultats -- à mon sens -- satisfaisants, mais l'utilisateur pourra modifier à loisir ces paramètres !
+\end{codecles}
+
+\begin{codetex}[listing only]
+%la grille a été rajoutée pour la sortie
+\begin{tikzpicture}
+ \draw[thick,mainlevee] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ;
+\end{tikzpicture}
+
+\begin{tikzpicture}
+ \draw[thick,mainlevee=5mm et 2pt] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ;
+\end{tikzpicture}
+
+\begin{tikzpicture}
+ \draw[thick,mainlevee=10mm et 3mm] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ;
+\end{tikzpicture}
+\end{codetex}
+
+\begin{codesortie}
+\hfill~\begin{tikzpicture}
+ \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4);
+ \draw[thick,mainlevee] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ;
+\end{tikzpicture}
+\hspace{1.5cm}
+\begin{tikzpicture}
+ \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4);
+ \draw[thick,mainlevee=5mm et 2pt] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ;
+\end{tikzpicture}
+\hspace{1.5cm}
+\begin{tikzpicture}
+ \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4);
+ \draw[thick,mainlevee=10mm et 3mm] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ;
+\end{tikzpicture}
+\hfill~
+\end{codesortie}
+
+\newpage
+
+\section{Historique}
+
+{\small \bverb|v1.1.8|~:~~~~Style "Mainlevée" basique pour \TikZ
+
{\small \bverb|v1.1.7|~:~~~~Conversions bin/hex/dec (basées sur \ctex{xintbinhex}) avec quelques détails
-{\small \bverb|v1.1.6|~:~~~~Ajout d'une commande \textsf{PLregln} pour déterminer les paramètres d'une régression linéaire par moindres carrés
+{\small \bverb|v1.1.6|~:~~~~Ajout d'une commande \textsf{PLreglin} pour déterminer les paramètres d'une régression linéaire par moindres carrés
{\small \bverb|v1.1.5|~:~~~~Ajout de deux commandes \textsf{aidesignePL} et \textsf{aidesignetkztabPL} pour, en \TikZ, créer des petits schémas \og de signe \fg
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index d1902bc2ac..7e32293bc5 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,7 +3,8 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2022/06/30 - v1.1.7 - Aide pour l'utilisation de LaTeX en lycée]
+\ProvidesPackage{ProfLycee}[2022/08/01 - v1.1.8 - Aide pour l'utilisation de LaTeX en lycée]
+% 1.1.8 Ajout d'un style mainlevee pour tikz
% 1.1.7 Ajout de commandes pour des conversions bin/dec/hex
% 1.1.6 Ajout d'une commande pour déterminer les paramètres d'un régression linéaire par moindres carrés
% 1.1.5 Ajout de commandes pour "visualiser" le signe de ax+b ou de ax2+bx+c (cf tnsana !)
@@ -50,6 +51,7 @@
\RequirePackage{fontawesome5}
%librairies tikz
\usetikzlibrary{calc}
+\usetikzlibrary{decorations}
\usetikzlibrary{decorations.pathreplacing}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{arrows,arrows.meta}
@@ -1436,4 +1438,10 @@
{}
}
+%==============MainLevée TikZ========== OK !!
+\tikzset{%
+ mainlevee/.style args={#1et#2}{decorate,decoration={random steps, segment length=#1,amplitude=#2}},
+ mainlevee/.default={5mm et 0.6pt}
+}
+
\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/projlib/ProjLib.dtx b/macros/latex/contrib/projlib/ProjLib.dtx
index c6615ebcd9..788cf84699 100644
--- a/macros/latex/contrib/projlib/ProjLib.dtx
+++ b/macros/latex/contrib/projlib/ProjLib.dtx
@@ -19,84 +19,84 @@
%<*ProjLib>
\ProvidesExplPackage
{ProjLib}
- {2022/07/23} {}
+ {2022/08/01} {}
{Collective interface of the ProjLib toolkit}
%</ProjLib>
%
%<*projlib-author>
\ProvidesExplPackage
{projlib-author}
- {2022/07/23} {}
+ {2022/08/01} {}
{Enhanced author information block}
%</projlib-author>
%
%<*projlib-datetime>
\ProvidesExplPackage
{projlib-datetime}
- {2022/07/23} {}
+ {2022/08/01} {}
{Convert numeric date-time string to natural language}
%</projlib-datetime>
%
%<*projlib-draft>
\ProvidesExplPackage
{projlib-draft}
- {2022/07/23} {}
+ {2022/08/01} {}
{Useful commands during draft stage}
%</projlib-draft>
%
%<*projlib-font>
\ProvidesExplPackage
{projlib-font}
- {2022/07/23} {}
+ {2022/08/01} {}
{Font selection and configuration}
%</projlib-font>
%
%<*projlib-language>
\ProvidesExplPackage
{projlib-language}
- {2022/07/23} {}
+ {2022/08/01} {}
{Multi-language configuration}
%</projlib-language>
%
%<*projlib-logo>
\ProvidesExplPackage
{projlib-logo}
- {2022/07/23} {}
+ {2022/08/01} {}
{The ProjLib logo}
%</projlib-logo>
%
%<*projlib-math>
\ProvidesExplPackage
{projlib-math}
- {2022/07/23} {}
+ {2022/08/01} {}
{Efficient math setup}
%</projlib-math>
%
%<*projlib-paper>
\ProvidesExplPackage
{projlib-paper}
- {2022/07/23} {}
+ {2022/08/01} {}
{Configuration of the paper style}
%</projlib-paper>
%
%<*projlib-text>
\ProvidesExplPackage
{projlib-text}
- {2022/07/23} {}
+ {2022/08/01} {}
{Text-related commands}
%</projlib-text>
%
%<*projlib-theorem>
\ProvidesExplPackage
{projlib-theorem}
- {2022/07/23} {}
+ {2022/08/01} {}
{Configuration of theorem-like environments}
%</projlib-theorem>
%
%<*projlib-titlepage>
\ProvidesExplPackage
{projlib-titlepage}
- {2022/07/23} {}
+ {2022/08/01} {}
{Commands for rendering the title page}
%</projlib-titlepage>
@@ -5275,7 +5275,7 @@
\l_projlib_titlepage_logo_tl
};
\node[text~width=.8\paperwidth, text~height=.5\paperheight, align=flush~left]
- at ($(current~page.north~west)+(.52\paperwidth,-.28\paperheight)$)
+ at ($(current~page.north~west)+(.57\paperwidth,-.28\paperheight)$)
{
\color{titlepage-back}
\sffamily
diff --git a/macros/latex/contrib/projlib/README.md b/macros/latex/contrib/projlib/README.md
index 3285bbd410..6961880f61 100644
--- a/macros/latex/contrib/projlib/README.md
+++ b/macros/latex/contrib/projlib/README.md
@@ -6,7 +6,7 @@
> **ProjLib** can be interpreted as "***Proj**ect **Lib**rary*" (in English), or as "***Proj**et **Lib**re*" (in French, meaning "*Free Project*").
-> **This bundle is dated 2022/07/23. Please note that the documentations are not yet up-to-date.**
+> **This bundle is dated 2022/08/01. Please note that the documentations are not yet up-to-date.**
## Introduction