diff options
Diffstat (limited to 'macros/generic/fixjfm/fixjfm-doc.tex')
-rw-r--r-- | macros/generic/fixjfm/fixjfm-doc.tex | 356 |
1 files changed, 0 insertions, 356 deletions
diff --git a/macros/generic/fixjfm/fixjfm-doc.tex b/macros/generic/fixjfm/fixjfm-doc.tex deleted file mode 100644 index d52f836721..0000000000 --- a/macros/generic/fixjfm/fixjfm-doc.tex +++ /dev/null @@ -1,356 +0,0 @@ - - -% 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} |