diff options
author | Norbert Preining <norbert@preining.info> | 2022-07-21 03:00:45 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2022-07-21 03:00:45 +0000 |
commit | 5cf5182b44c08dfb2bc977ce5aa5ca6d03b36923 (patch) | |
tree | b32d29c9fb1289ccc994ee099b27c4a45b621a0a /macros/jptex/generic | |
parent | 2773132ea593028dafe764f7560fd94ecb827d3d (diff) |
CTAN sync 202207210300
Diffstat (limited to 'macros/jptex/generic')
-rw-r--r-- | macros/jptex/generic/fixjfm/README | 16 | ||||
-rw-r--r-- | macros/jptex/generic/fixjfm/fixjfm-doc.pdf | bin | 0 -> 281286 bytes | |||
-rw-r--r-- | macros/jptex/generic/fixjfm/fixjfm-doc.tex | 356 | ||||
-rw-r--r-- | macros/jptex/generic/fixjfm/fixjfm.sty | 278 |
4 files changed, 650 insertions, 0 deletions
diff --git a/macros/jptex/generic/fixjfm/README b/macros/jptex/generic/fixjfm/README new file mode 100644 index 0000000000..3b68f21c0b --- /dev/null +++ b/macros/jptex/generic/fixjfm/README @@ -0,0 +1,16 @@ + + +The fixjfm package --- Fix JFM (for *pTeX) + +CTAN Homepage: https://ctan.org/pkg/fixjfm + +Repository: https://github.com/Man-Ting-Fang/fixjfm + +Version: 2018-03-24 v0.8 + +Copyright 2017--2018 Yue ZHANG + +License: Knuth License (https://ctan.org/license/knuth) + +This package fixes several bugs in the JFM format. Both LaTeX and plain TeX are +supported. diff --git a/macros/jptex/generic/fixjfm/fixjfm-doc.pdf b/macros/jptex/generic/fixjfm/fixjfm-doc.pdf Binary files differnew file mode 100644 index 0000000000..43147b99de --- /dev/null +++ b/macros/jptex/generic/fixjfm/fixjfm-doc.pdf diff --git a/macros/jptex/generic/fixjfm/fixjfm-doc.tex b/macros/jptex/generic/fixjfm/fixjfm-doc.tex new file mode 100644 index 0000000000..d52f836721 --- /dev/null +++ b/macros/jptex/generic/fixjfm/fixjfm-doc.tex @@ -0,0 +1,356 @@ + + +% fixjfm-doc.tex + +% !TeX encoding = UTF-8 +% !TeX program = pdfLaTeX + +\RequirePackage{fix-cm} + +\documentclass[a4paper]{article} + +\usepackage{amsfonts} +\usepackage[OT1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage[UKenglish]{babel} +\usepackage[babel]{microtype} +\usepackage{etoolbox} +\usepackage{booktabs} + +\AtBeginEnvironment{verbatim}{\microtypesetup{activate=false}} + +\abovetopsep=\medskipamount + +\newcommand\NormalSans{\normalfont\sffamily} +\newcommand\pkg[1]{{\protect\NormalSans#1}} + +\newcommand\pTeX{p\kern-0.15em\TeX} +\newcommand\e{\ensuremath{\varepsilon}} +\newcommand\epTeX{\e-\pTeX} +\newcommand\ApTeX{A\kern-0.1em\pTeX} +\newcommand\pLaTeX{p\LaTeX} + +\newcommand\FwBox{\ensuremath{\square}\hskip0em plus 0.05em\relax} + +\newbox\fwbox +\setbox\fwbox=\hbox{\FwBox} + +\newcommand\TwoFwBoxes{\FwBox\FwBox} +\newcommand\FourFwBoxes{\TwoFwBoxes\TwoFwBoxes} + +\newcommand\DemoText{% + \FourFwBoxes\FourFwBoxes\FourFwBoxes\FourFwBoxes + \FourFwBoxes\FourFwBoxes\ensuremath{\square}} + +\newcommand\demotext[1]{% + \begin{minipage}{20\wd\fwbox}\centering + \fbox{\begin{minipage}{16\wd\fwbox}% + \hskip2\wd\fwbox\relax\DemoText\par + \leavevmode\hbox to#1\wd\fwbox{\hss``}\DemoText''\par + \hskip2\wd\fwbox\relax\DemoText\par + \end{minipage}}% + \end{minipage}} + +\newcommand\yes{yes} +\newcommand\no{no} + +\newcommand\eclmvtt{test} + +\font\eclmvtt=ec-lmvtt10 at 10pt + +\newcommand\demoinput[2]{\TwoFwBoxes + \hbox to 1\wd\fwbox{\texttt{,}\hss}#1% + \hbox to 1\wd\fwbox{\hss{\eclmvtt``}}\TwoFwBoxes + \hbox to 1\wd\fwbox{{\eclmvtt''}\hss}#2} + +\newcommand\demooutput[2]{% + \TwoFwBoxes\hbox to#1\wd\fwbox{,\hss{#2``}}\TwoFwBoxes{#2''}} + +\newcommand\sans{test} + +\font\sans=SourceSansPro-Semibold-tlf-ot1 at 10pt + +\newenvironment{history}[1]% + {\noindent\textbf{#1}\nopagebreak\relax\begin{itemize}}% + {\end{itemize}} + +\begin{document} + +\title{The \pkg{fixjfm} package% + \thanks{CTAN Homepage: \texttt{https://ctan.org/pkg/fixjfm}} + \thanks{Repository: \texttt{https://github.com/Man-Ting-Fang/fixjfm}}} +\author{Yue \textsc{Zhang}} +\date{2018-03-24\quad v0.8} + +\maketitle + +\begin{abstract} +This package fixes several bugs in the JFM format. Both \LaTeX\ and plain \TeX\ +are supported. +\end{abstract} + +\section{Introduction} + +The JFM format is an extension of the TFM format and is used for typesetting CJK +characters with *\pTeX. It works perfectly under almost all circumstances, but +there are still at least two bugs: +\begin{itemize} +\item Bug 1: the indentation is incorrect if the first character of a paragraph + is an opening fullwidth punctuation mark, see Figure \ref{fig:ind}; +\item Bug 2: the spacing between two consecutive fullwidth punctuation marks + cannot be adjusted if the font is changed there, see Table \ref{tab:adj}. +\end{itemize} +\begin{figure}[!ht]\centering +\demotext{3}\demotext{2.5} +\caption{Comparison of the indentation produced without this package (left) and + with this package (right)} +\label{fig:ind} +\end{figure} +\vskip-20pt\relax +\begin{table}[!ht]\centering +\caption{Comparison of the adjustment of the spacing between two consecutive + fullwidth punctuation marks} +\label{tab:adj} +\begin{tabular}{ccll} +\toprule +Font change & This package & Input & Output \\ +\midrule +\no & either \no\ or \yes & \demoinput{}{} & \demooutput{1.5}{} \\ +\yes & \no & \demoinput{\texttt{\char"5C textgt% + \char"7B}}{\texttt{\char"7D}} + & \demooutput{2}{\sans} \\ +\yes & \yes & \demoinput{\texttt{\char"5C textgt% + \char"7B}}{\texttt{\char"7D}} + & \demooutput{1.5}{\sans} \\ +\bottomrule +\end{tabular} +\end{table} +It seems that macro is the easiest solution to these problems. However, the +second bug can only be fixed when using \e-(u)\pTeX\ or \ApTeX\ (under most, but +not all circumstances), because the primitive \verb|\lastnodechar| which is +introduced by \epTeX\ is required. Anyhow, using this package with \pTeX\ or any +one of its derivatives does not hurt. Please also keep in mind that owing to +technical limitations, this package is not a panacea. + +There is also another improvement: \verb|\leavevmode| is redefined as +\verb|\quitvmode| if the latter is available as a primitive (among all *\pTeX\ +engines to date, only \ApTeX\ has \verb|\quitvmode|). So after loading this +package, you can always use \verb|\leavevmode| and need not worry about +\verb|\quitvmode|. If you are wondering about what the difference between them +is, please see \textit{The pdf\TeX\ user manual}. + +\section{Basic usage} + +This package has no options. It is recommended that this package should be +loaded before any other packages. If you are using \LaTeX, load this package at +the beginning of your preamble: +\begin{verbatim} + \documentclass... + \usepackage{fixjfm} +\end{verbatim} +or even before \verb|\documentclass| (use \verb|\RequirePackage| instead): +\begin{verbatim} + \RequirePackage{fixjfm} + \documentclass... +\end{verbatim} +If you are using plain \TeX, put the following line near the beginning of your +\verb|.tex| file: +\begin{verbatim} + \input fixjfm.sty +\end{verbatim} + +After loading this package, the first bug mentioned above can be automatically +fixed under most (but not all) circumstances. If you find that it cannot be +fixed somewhere, you can add \verb|\<| manually before the opening fullwidth +punctuation mark which begins the paragraph. + +In the case of the second bug mentioned above, the situation is different. If +you are using \LaTeX, \verb|\textmc| and \verb|\textgt| are redefined by default +so that the bug can be automatically fixed (again, under most, but not all +circumstances). However, \verb|\mcfamily| and \verb|\gtfamily| remain unchanged. +The difference here is similar to that between, say, \verb|\textit| and +\verb|\itshape|: \verb|\textit| automatically takes care of any necessary italic +correction on either side of the argument, while \verb|\itshape| does nothing +about that. Just like \verb|\itshape| and \verb|\/|, you should add +\begin{verbatim} + \fixjfmspacing +\end{verbatim} +by yourself after the font change that appears between two consecutive fullwidth +punctuation marks. For example: +\begin{trivlist}\item\relax{\ttfamily\hskip2em}\TwoFwBoxes +\hbox to 1\wd\fwbox{\texttt{,}\hss}\verb|{\gtfamily\fixjfmspacing|% +\hbox to 1\wd\fwbox{\hss{\eclmvtt``}}\TwoFwBoxes +\hbox to 1\wd\fwbox{{\eclmvtt''}\hss}\verb|}\fixjfmspacing|% +\hbox to 1\wd\fwbox{\hss{\eclmvtt``}}\TwoFwBoxes +\hbox to 1\wd\fwbox{{\eclmvtt''}\hss}% +\end{trivlist} +If you are using plain \TeX, you should always add \verb|\fixjfmspacing| by +yourself, because plain (*p)\TeX\ does not have \verb|\textmc|, \verb|\textgt|, +or the like. + +If you are using \LaTeX\ and prefer the standard version\footnote{Since v0.3, +the ``standard version'' is similar to \pkg{jsclasses} and \pkg{bxjscls} rather +than (u)\pLaTeX.} of \verb|\textmc| and \verb|\textgt|, you can declare +\begin{verbatim} + \UseStandardCJKTextFontCommands +\end{verbatim} +In contrast, +\begin{verbatim} + \UseFixJFMCJKTextFontCommands +\end{verbatim} +redefines \verb|\textmc| and \verb|\textgt| and is declared by default. These +two commands are important. Consider the following example: +\begin{trivlist} +\item\relax{\ttfamily\hskip2em}\verb|\textgt{\Large |\TwoFwBoxes\verb|}| +\end{trivlist} +It causes a fatal error when the \pkg{fixjfm} version of \verb|\textgt| is used. +The solution is to change \verb|\textgt| back to the standard version, either +globally or locally: +\begin{trivlist}\itemsep=0pt\relax\parsep=0pt\relax +\item\relax{\ttfamily\hskip2em}% +\verb|\UseFixJFMCJKTextFontCommands \textgt{|\TwoFwBoxes\verb|}| +\item\relax{\ttfamily\hskip2em}% +\verb|\UseStandardCJKTextFontCommands \textgt{\Large |\TwoFwBoxes\verb|}| +\item\relax{\ttfamily\hskip2em}% +\verb|\UseFixJFMCJKTextFontCommands \textgt{|\TwoFwBoxes\verb|}| +\item\relax{\ttfamily\hskip1.5em}% +\verb|{\UseStandardCJKTextFontCommands \textgt{\Large |\TwoFwBoxes\verb|}}| +\end{trivlist} + +\section{Advanced usage} + +The spacing between two consecutive fullwidth punctuation marks is produced by +a glue item specified in the corresponding JFM file. However, if the font is +changed there, the JFM format cannot work correctly, so this package puts +another glue item there to adjust the spacing. The natural width of the new glue +item is calculated according to the corresponding JFM file, so you need not +worry about it. However, the stretch and shrink components cannot be extracted +from JFM, so the following two commands are provided: +\begin{verbatim} + \SetFixJFMSpacingStretch + \SetFixJFMSpacingShrink +\end{verbatim} +They expect an argument specifying how much space to stretch and shrink +respectively. This package sets both of them to \verb|0.05zw| by default. + +Macro writers may want to (re)define commands like the \pkg{fixjfm} version of +\verb|\textmc| and \verb|\textgt| for CJK text fonts, thus the following command +is provided: +\begin{verbatim} + \DeclareFixJFMCJKTextFontCommand +\end{verbatim} +It is similar to \LaTeX's \verb|\DeclareTextFontCommand|. For example, +\verb|\textmc| is redefined by this package as follows: +\begin{verbatim} + \DeclareFixJFMCJKTextFontCommand\textmc{\mcfamily} +\end{verbatim} +and \verb|\textgt| is similar. In contrast, +\begin{verbatim} + \DeclareStandardCJKTextFontCommand +\end{verbatim} +(re)defines a CJK text font command like the standard version of \verb|\textmc| +and \verb|\textgt|. But there is a more convenient way: Suppose that you have a +new CJK text font command \verb|\xyfamily|, then +\begin{verbatim} + \AppendToUseXCJKTextFontCommands{\textxy}{\xyfamily} +\end{verbatim} +will do all you need and makes \verb|\Use...CJKTextFontCommands| also apply to +\verb|\textxy|. This command and \verb|\Use...CJKTextFontCommands| can be given +in any order, so you do not need to redeclare +\verb|\UseFixJFMCJKTextFontCommands| (which is the default behaviour) if that is +what you want. + +Finally, there are several macros that may be useful for \TeX nicians: +\begin{verbatim} + \FixJFMSpacing + \fixjfmparindent + \FixJFMParindent + \EveryparPreHook + \EveryparPostHook + \ifUseFixJFMCJKTextFontCommands + \ifUseStandardCJKTextFontCommands +\end{verbatim} +They are worthless for ordinary use. If you are interested in them, please have +a look at the source code. + +\section{Compatibility} + +The \LaTeX-only package \pkg{bxjaprnind} also focuses on the first bug mentioned +above. It provides some additional functionalities and also supports some other +\TeX\ engines. This package can be used together with \pkg{bxjaprnind}, but +please note that if you prefer \pkg{bxjaprnind}, you have to load it before this +package, and vice versa, in case both of them are loaded. + +\section{Acknowledgements} + +The source code of this package is mostly taken from\footnote{This package also +improves the code slightly.} (in alphabetical order): +\epTeX\ Wiki (Hironori Kitagawa): +\begin{verbatim} + https://ja.osdn.net/projects/eptex/wiki/lastnodechar +\end{verbatim} +\pkg{everyhook} (Stephen Checkoway): +\begin{verbatim} + https://ctan.org/pkg/everyhook +\end{verbatim} +\pkg{jsclasses} (Haruhiko Okumura et al.): +\begin{verbatim} + https://ctan.org/pkg/jsclasses +\end{verbatim} +and \pkg{platex} (Kazuki Maeda \& Japanese \TeX\ Development Community): +\begin{verbatim} + https://ctan.org/pkg/platex +\end{verbatim} +Many thanks to the authors of these packages. I would also like to thank +Hironobu Yamashita, who helped me a lot. + +\section{History} + +\begin{history}{2017-09-02 v0.2} +\item First public version. +\end{history} + +\begin{history}{2017-09-04 v0.3} +\item Fixes. +\item Make \verb|\UseFixJFMCJKTextFontCommands| and + \verb|\UseStandardCJKTextFontCommands| also available after + \verb|\begin{document}|. +\item Add \verb|\DeclareStandardCJKTextFontCommand| and use it for redefining + the standard version of \verb|\textmc| and \verb|\textgt|. +\end{history} +Thanks to Hironobu Yamashita for suggesting all these changes: +\begin{verbatim} + https://github.com/Man-Ting-Fang/fixjfm/pull/1 +\end{verbatim} + +\begin{history}{2017-09-04 v0.4} +\item Bug fix, thanks to Hironobu Yamashita: +\end{history} +\begin{verbatim} + https://github.com/Man-Ting-Fang/fixjfm/pull/2 +\end{verbatim} + +\begin{history}{2017-09-12 v0.5} +\item Bug fix, thanks to Hironobu Yamashita: +\end{history} +\begin{verbatim} + https://github.com/Man-Ting-Fang/fixjfm/issues/3 +\end{verbatim} + +\begin{history}{2017-09-21 v0.6} +\item Bug fix and improvement, thanks to Hironobu Yamashita: +\end{history} +\begin{verbatim} + https://github.com/Man-Ting-Fang/fixjfm/pull/4 +\end{verbatim} + +\begin{history}{2017-12-27 v0.7} +\item Add \verb|\ifUseFixJFMCJKTextFontCommands| and + \verb|\ifUseStandardCJKTextFontCommands|. +\end{history} + +\begin{history}{2018-03-24 v0.8} +\item Add \verb|\AppendToUseXCJKTextFontCommands|. +\end{history} + +\end{document} diff --git a/macros/jptex/generic/fixjfm/fixjfm.sty b/macros/jptex/generic/fixjfm/fixjfm.sty new file mode 100644 index 0000000000..11887daafc --- /dev/null +++ b/macros/jptex/generic/fixjfm/fixjfm.sty @@ -0,0 +1,278 @@ + + +% fixjfm.sty +% Copyright 2017--2018 Yue ZHANG +% License: Knuth License (https://ctan.org/license/knuth) + +\csname ENDINPUTFIXJFMDOTSTY\endcsname + +\let\ENDINPUTFIXJFMDOTSTY=\endinput + +\begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname ProvidesPackage\endcsname\relax + \else + \ProvidesPackage{fixjfm}[2018/03/24 v0.8 Fix JFM (for *pTeX)]% + \fi + +\edef\FIXJFMDOTSTYRESTORECATCODE{\catcode`\noexpand\@=\the\catcode`\@\relax} + +\catcode`\@=11\relax + +% common utilities + +\def\fixjfm@ifprimitive#1{% + \begingroup + \edef\fixjfm@temp@meaning{\meaning#1}% + \edef\fixjfm@temp@string{\string#1}% + \expandafter + \endgroup + \ifx\fixjfm@temp@meaning\fixjfm@temp@string} + +\fixjfm@ifprimitive\tate +\else + \errmessage{pTeX / e-pTeX / upTeX / e-upTeX / ApTeX is required}% + \FIXJFMDOTSTYRESTORECATCODE + \expandafter\endinput +\fi + +\def\fixjfm@empty{} + +\begingroup + \let\CATCODE=\catcode + \let\RELAX=\relax + \let\GDEF=\gdef + \let\ENDGROUP=\endgroup + \CATCODE`\k=12\RELAX + \CATCODE`\a=12\RELAX + \CATCODE`\n=12\RELAX + \CATCODE`\j=12\RELAX + \CATCODE`\i=12\RELAX + \CATCODE`\c=12\RELAX + \CATCODE`\h=12\RELAX + \CATCODE`\r=12\RELAX + \CATCODE`\t=12\RELAX + \CATCODE`\e=12\RELAX + \GDEF\FIXJFM@KANJICHARACTER{kanji character }% +\ENDGROUP + +\def\fixjfm@get@inhibitxspcode#1{% + \expandafter\expandafter\expandafter\fixjfm@@get@inhibitxspcode + \expandafter\meaning\expandafter#1\FIXJFM@KANJICHARACTER\relax\fixjfm@nil} + +\expandafter\def\expandafter\fixjfm@@get@inhibitxspcode + \expandafter#\expandafter1\FIXJFM@KANJICHARACTER#2#3\fixjfm@nil{% + \count2=-1\relax + \def\fixjfm@temp@tokens{#1}% + \ifx\fixjfm@temp@tokens\fixjfm@empty + \count2=\inhibitxspcode`#2\relax + \fi} + +% \leavevmode + +\fixjfm@ifprimitive\quitvmode + \let\leavevmode=\quitvmode +\fi + +% \fixjfmspacing + +\def\fixjfmspacing{\FixJFMSpacing} + +\newif\iffixjfm@lastnodechar@available@ + +\fixjfm@ifprimitive\lastnodechar + \fixjfm@lastnodechar@available@true +\fi + +\iffixjfm@lastnodechar@available@ + \begingroup + \kansujichar1=\sjis"8ABF\relax % U+6F22: Kanji Han + \kansujichar2=\sjis"82A0\relax % U+3042: Hiragana A + \kansujichar3=\sjis"8142\relax % U+3002: CJK Full Stop + \xdef\fixjfm@kanji{\kansuji1}% + \xdef\fixjfm@kana{\kansuji2}% + \xdef\fixjfm@other{\kansuji3}% + \endgroup + \csname newif\expandafter\endcsname\csname iffixjfm@sp@status@\endcsname + \def\fixjfm@ifautospacing{% + \fixjfm@sp@status@false + \begingroup + \kanjiskip=10pt\relax + \setbox0=\hbox{\fixjfm@kanji\fixjfm@kanji\fixjfm@kanji}% + \dimen4=\wd0\relax + \noautospacing + \setbox0=\hbox{\fixjfm@kanji\fixjfm@kanji\fixjfm@kanji}% + \dimen2=\wd0\relax + \expandafter + \endgroup + \ifdim\dimen4>\dimen2\relax + \fixjfm@sp@status@true + \fi}% + \def\fixjfm@ifautoxspacing{% + \fixjfm@sp@status@false + \begingroup + \xspcode`\A=3\relax + \inhibitxspcode\sjis"8ABF=3\relax % U+6F22: Kanji Han + \xkanjiskip=20pt\relax + \setbox0=\hbox{\fixjfm@kanji A\fixjfm@kanji}% + \dimen4=\wd0\relax + \noautoxspacing + \setbox0=\hbox{\fixjfm@kanji A\fixjfm@kanji}% + \dimen2=\wd0\relax + \expandafter + \endgroup + \ifdim\dimen4>\dimen2\relax + \fixjfm@sp@status@true + \fi}% + \def\FixJFMSpacing{\futurelet\fixjfm@sp@temp@token\fixjfm@fixspacing}% + \def\fixjfm@fixspacing{% + \begingroup + \count0=\lastnodechar + \edef\fixjfm@sp@temp@tokens{\fixjfm@sp@temp@token}% + \expandafter\fixjfm@@fixspacing\fixjfm@sp@temp@tokens\relax\fixjfm@sp@nil + \ifnum\count0>-1\relax + \ifnum\count0<256\relax + \ifnum\xspcode\count0>1\relax + \ifnum\count2>1\relax + \fixjfm@ifautoxspacing + \iffixjfm@sp@status@ + \hskip\xkanjiskip + \fi + \fi + \fi + \else + \fixjfm@ifautospacing + \iffixjfm@sp@status@ + \hskip\kanjiskip + \fi + \fi + \setbox0=\hbox{% + \inhibitglue\char\count0\relax\fixjfm@sp@temp@token\inhibitglue}% + \setbox2=\hbox{% + \inhibitglue\char\count0 \fixjfm@sp@temp@token\inhibitglue}% + \dimen0=\wd2\relax + \advance\dimen0 by -\wd0\relax + \fixjfm@temp@hskip + \fi + \endgroup}% + \long\def\fixjfm@@fixspacing#1#2\fixjfm@sp@nil{% + \count2=1\relax + \ifcat#1\fixjfm@kanji + \else + \ifcat#1\fixjfm@kana + \else + \ifcat#1\fixjfm@other + \else + \count0=-1\relax + \count2=0\relax + \fi + \fi + \fi + \ifnum\count2>0\relax + \fixjfm@get@inhibitxspcode#1\relax + \fi}% + \def\SetFixJFMSpacingStretch#1{\def\fixjfm@temp@hskip@stretch{#1}}% + \def\SetFixJFMSpacingShrink#1{\def\fixjfm@temp@hskip@shrink{#1}}% + \def\fixjfm@temp@hskip{% + \hskip\dimen0 plus \fixjfm@temp@hskip@stretch + minus \fixjfm@temp@hskip@shrink\relax}% + \SetFixJFMSpacingStretch{0.05zw}% + \SetFixJFMSpacingShrink{0.05zw}% +\else + \let\FixJFMSpacing=\fixjfm@empty + \def\SetFixJFMSpacingStretch#1{}% + \def\SetFixJFMSpacingShrink#1{}% +\fi + +\newif\ifUseFixJFMCJKTextFontCommands +\newif\ifUseStandardCJKTextFontCommands + +\begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname DeclareTextFontCommand\endcsname\relax + \def\DeclareFixJFMCJKTextFontCommand#1#2{}% + \def\DeclareStandardCJKTextFontCommand#1#2{}% + \let\UseFixJFMCJKTextFontCommands=\fixjfm@empty + \let\UseStandardCJKTextFontCommands=\fixjfm@empty + \def\AppendToUseXCJKTextFontCommands#1#2{}% + \else + \def\DeclareFixJFMCJKTextFontCommand#1#2{% + \DeclareRobustCommand#1[1]{% + \relax\ifmmode\expandafter\nfss@text\fi + {#2\fixjfmspacing##1}\fixjfmspacing}}% + \def\DeclareStandardCJKTextFontCommand#1#2{% + \DeclareRobustCommand#1[1]{% + \relax\ifmmode\expandafter\nfss@text\fi{#2##1}}}% + \def\UseFixJFMCJKTextFontCommands{% + \UseFixJFMCJKTextFontCommandstrue + \UseStandardCJKTextFontCommandsfalse + \DeclareFixJFMCJKTextFontCommand\textmc{\mcfamily}% + \DeclareFixJFMCJKTextFontCommand\textgt{\gtfamily}}% + \def\UseStandardCJKTextFontCommands{% + \UseStandardCJKTextFontCommandstrue + \UseFixJFMCJKTextFontCommandsfalse + \DeclareStandardCJKTextFontCommand\textmc{\mcfamily}% + \DeclareStandardCJKTextFontCommand\textgt{\gtfamily}}% + \def\AppendToUseXCJKTextFontCommands#1#2{% + \g@addto@macro\UseFixJFMCJKTextFontCommands{% + \DeclareFixJFMCJKTextFontCommand#1{#2}}% + \g@addto@macro\UseStandardCJKTextFontCommands{% + \DeclareStandardCJKTextFontCommand#1{#2}}% + \ifUseFixJFMCJKTextFontCommands + \DeclareFixJFMCJKTextFontCommand#1{#2}% + \else + \DeclareStandardCJKTextFontCommand#1{#2}% + \fi}% + \UseFixJFMCJKTextFontCommands + \fi + +% \inhibitglue + +\fixjfm@ifprimitive\protected + \protected\def\<{\ifvmode\leavevmode\fi\inhibitglue}% +\else + \def\<{\inhibitglue}% +\fi + +% \fixjfmparindent + +\def\fixjfmparindent{\FixJFMParindent} + +\begingroup + \expandafter\ifx\csname useparheadparenindent\endcsname\relax % bxjaprnind.sty + \else + \global\let\FixJFMParindent=\fixjfm@empty + \global\let\EveryparPreHook=\fixjfm@empty + \global\let\EveryparPostHook=\fixjfm@empty + \aftergroup\FIXJFMDOTSTYRESTORECATCODE + \aftergroup\endinput + \fi +\endgroup + +\def\FixJFMParindent{\futurelet\fixjfm@pi@temp@token\fixjfm@fixparindent} + +\def\fixjfm@fixparindent{% + \begingroup + \fixjfm@get@inhibitxspcode\fixjfm@pi@temp@token + \ifnum\count2=2\relax\inhibitglue\fi + \endgroup} + +\begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname PushPostHook\endcsname\relax % everyhook.sty + \def\EveryparPreHook{}% + \def\EveryparPostHook{\fixjfmparindent}% + \let\fixjfm@previous@everypar=\everypar + \csname newtoks\expandafter\endcsname\csname everypar\endcsname + \let\fixjfm@private@everypar=\everypar + \fixjfm@private@everypar=\fixjfm@previous@everypar + \fixjfm@previous@everypar={% + \EveryparPreHook + \the\expandafter\fixjfm@private@everypar + \EveryparPostHook}% + \else + \PushPostHook{par}{\fixjfmparindent}% + \let\EveryparPreHook=\fixjfm@empty + \let\EveryparPostHook=\fixjfm@empty + \fi + +\FIXJFMDOTSTYRESTORECATCODE + +\endinput |