<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% \iffalse meta-comment
% This is file `outoruby.dtx'.
%% Copyright (c) 2025 kkotsi
%% This file is distributed under the GNU General Public Licence Version 3.
%%   https://www.gnu.org/licenses/gpl-3.0.html
%% Repository: https://codeberg.org/kkotsi/outoruby
%% CTAN: https://ctan.org/pkg/outoruby
%
% The outoruby package: Ruby with line break support for Japanese text.
%
% This package provides the \outoruby command, which supports line breaks when typesetting ruby anotations.
% It automatically switches between appropriate ruby form at the beginning and the end of lines according to JIS X 4051 and JLReq.
% This package depends on pxrubrica and supports any engine that is supported by that package.
%
% To generate outoruby.sty, run the following command:
%   tex outoruby.dtx
% To generate outoruby.pdf, run following commands (outoruby.sty needed):
%   uplatex outoruby.dtx
%   uplatex outoruby.dtx
%   uplatex outoruby.dtx
%   makeindex -s gind.ist outoruby.idx
%   makeindex -s gglo.ist outoruby.glo -o outoruby.gls
%   uplatex outoruby.dtx
%   uplatex outoruby.dtx
%   dvipdfmx outoruby
% \fi
% \makeatother
%%
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&amp;
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \&lt;
%%   Equals        \=     Greater than  \&gt;     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
%%
% \makeatletter
% \CheckSum{1407}
%
% \iffalse
%&lt;*ins&gt;
\ifx\documentclass\undefined
  \input docstrip
  \askforoverwritetrue
  \AddGenerationDate
\preamble
\endpreamble
  \generate{%
    \file{outoruby.sty}{\from{outoruby.dtx}{pkg}}%
  }
  \expandafter\endbatchfile
\fi
%&lt;/ins&gt;
%
%&lt;*driver&gt;
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{outoruby.dtx}
%&lt;/driver&gt;
% \fi
%
% \@nameuse{@@sourcepart}\iffalse
%
% 谿句ｿｵ縺ｪ縺後ｉ\LaTeX 髯仙ｮ壹�
%    \begin{macrocode}
%&lt;pkg&gt;\NeedsTeXFormat{LaTeX2e}
%&lt;pkg&gt;\ProvidesPackage{outoruby}
%&lt;*pkg|driver&gt;
  [2025/03/14 v0.0.1 ]
%&lt;/pkg|driver&gt;
%    \end{macrocode}
%
% \@nameuse{@@sourcepart}\fi
% \@nameuse{@@sourcepartend}
%
% \iffalse
%&lt;*driver&gt;
\documentclass[dvipdfmx]{ujarticle}
\makeatletter
\usepackage[scale=0.924715,deluxe]{jlreq-deluxe}\normalfont\normalsize
\usepackage{ajmacros}
\newcommand\zw{zw}
\setlength\emergencystretch{3em}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\renewcommand*\rmdefault{lmr}
\usepackage[scale=0.86,medium]{FiraSans}
\renewcommand*{\ttdefault}{ntxtt}
\DeclareFontShape{JY2}{hmc}{b}{n}{&lt;-&gt;ssub*hmc/bx/n}{}
\DeclareFontShape{JT2}{hmc}{b}{n}{&lt;-&gt;ssub*hmc/bx/n}{}
\DeclareFontShape{JY2}{hgt}{b}{n}{&lt;-&gt;ssub*hgt/bx/n}{}
\DeclareFontShape{JT2}{hgt}{b}{n}{&lt;-&gt;ssub*hgt/bx/n}{}
% 螟ｪ蟄励�繧ｴ繧ｷ繝�け
\DeclareFontShape{JY2}{hmc}{bx}{n}{&lt;-&gt;ssub*hgt/bx/n}{}
\DeclareFontShape{JT2}{hmc}{bx}{n}{&lt;-&gt;ssub*hgt/bx/n}{}
%
\setlength\topskip{1.5\zw}
\setlength\baselineskip{1.75\zw}
\setlength\columnsep{3\zw}
\usepackage[
  textwidth=47\zw,
  lines=46,
  left=12.2\zw,
]{geometry}
\usepackage{pxeverysel,plext}
\usepackage{multicol,color,graphicx,bm,amsfonts,array}
\usepackage{booktabs,float,bxtexlogo,tasks,accsupp,fancyvrb,manfnt,needspace}
\usepackage{etoolbox}
\usepackage[verb]{bxghost}
\usepackage{hypdoc}
\AlsoImplementation \CodelineIndex
\usepackage{footnotehyper,footnotebackref}
\usepackage{pxjahyper}
\usepackage{outoruby}
%\usepackage{bxjaprnind}
\catcode`\#=12 \@firstofone{\catcode`\#=6
\let\@@pxrr@compose@oneside@block@do\pxrr@compose@oneside@block@do
  \patchcmd\@@pxrr@compose@oneside@block@do{%
    \pxrr@evenspace@int{#1}\pxrr@boxr
  }{%
    \pxrr@evenspace@int{\pxrr@locate@inner}\pxrr@boxr
  }{%
    \newcommand\pxpatchon{%
      \let\pxrr@compose@oneside@block@do\@@pxrr@compose@oneside@block@do}
  }{%
    \let\@@pxrr@compose@block\pxrr@compose@block
    \patchcmd\@@pxrr@compose@block{%
      \pxrr@evenspace@int{#1}\pxrr@boxr
    }{%
      \pxrr@evenspace@int{\pxrr@locate@inner}\pxrr@boxr
    }{%
      \newcommand\pxpatchon{%
        \let\pxrr@compose@block\@@pxrr@compose@block}
    }{%
      Patch failed%
    }%
  }
}
\outorubyhyphenbreakable
\def\em@@last#1{%
  \global\@namedef{em@@last@#1}{}}
\begin{document}
\DocInput{outoruby.dtx}
\end{document}
%&lt;/driver&gt;
% \fi
%
% \RecordChanges
% \def\@@generalname:\ {}^^A 蜊ｱ髯ｺ
% \def\generalname{\protect\@@generalname}
% \changes{v0.0.0}{2025/03/02}{蛻晉沿縲�}
% \changes{v0.0.1}{2025/03/15}{霆ｽ蠕ｮ縺ｪ菫ｮ豁｣縲�}
% \DoNotIndex{
%   \advance, \begingroup, \csname, \def, \edef, \else, \endgroup, \endcsname, \expandafter,
%   \fi, \if, \ifnum, \ifx, \let, \noexpand,
%   \relax, \the
% }
%
% \frenchspacing
% \setlength\emergencystretch{3em}
%
% \setlength\marginparwidth{12\zw}
% \newcommand\marginfig[1]{\marginpar{^^A
%   \hskip2.5\zw
%   \advance\marginparwidth-3\zw
%   \parbox[b]{\marginparwidth}{^^A
%     #1}\hskip0.5\zw}}
%
% \def\texlevel{\leavevmode\marginpar{\hfill\dbend}}
% \def\textexlevel{\leavevmode\marginpar{\hfill\dbend\dbend}}
%
% \DeclareRobustCommand\small{^^A
%   \@setfontsize\small\@ixpt{13.5}^^A
% }
% \DeclareRobustCommand\footnotesize{^^A
%   \@setfontsize\small\@viiipt{12}^^A
% }
% \setlength\footnotesep{8.6\p@}
% \DeclareRobustCommand*\emph[1]{^^A
%   \relax\ifmmode \bm{#1}^^A
%   \else \textbf{\textgt{#1}}\fi}
%
% \renewcommand\contentsname{逶ｮ谺｡}
% \renewcommand\abstractname{\outoruby{讎りｦ±{縺後＞|繧医≧}}
%
% \newcommand\jttdefault{\gtdefault}
% \EverySelectfont{^^A
%   \begingroup
%     \edef\x{\f@family}^^A
%     \edef\y{\ttdefault}^^A
%     \edef\z{\k@family}^^A
%     \edef\a{\jttdefault}^^A
%   \expandafter\expandafter\expandafter\endgroup\ifx\x\y\ifx\z\a\else
%     \kanjifamily\jttdefault\selectfont
%   \fi\fi\relax
%   \setlength\kanjiskip{0pt plus 0.02\zw minus 0.02\zw}^^A
%   \setlength\xkanjiskip{0.25\zw plus 0.05\zw minus 0.10\zw}^^A
% }\selectfont
%
% \renewcommand\quotation{^^A
%   \list{}{\listparindent1\zw\itemindent\listparindent
%     \rightmargin\leftmargin \parsep\z@
%     \item\relax}}
% \setlength\leftmargini{2\zw}
% \edef\@listi{\@listi
%   \itemsep\z@
%   \parsep\z@
% }
% \let\@listI\@listi
%
% \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{^^A
%   0.5\Cvs}{1sp}{\normalfont\normalsize\bfseries\gtfamily \noindent 笆�}}
%
% \newcommand\@@fnmark{\textsf{\textdagger}}
% \renewcommand\@makefnmark{\null\hbox{\@textsuperscript{\normalfont\@@fnmark\@thefnmark}}\null}
% \renewcommand\@makefntext[1]{\parindent1\zw
%   \leftskip1.75\zw
%   \noindent\hb@xt@\z@{\hskip-1\zw\relax
%     \hyperref[\BackrefFootnoteTag]{\@@fnmark\@thefnmark}\hss}\hskip1\zw\relax#1}
% \renewcommand\footnoterule{^^A
%   \kern-3\p@
%   \hrule\@width.333\columnwidth\@height0.4\p@
%   \kern2.5\p@}
% \setlength{\skip\footins}{1.75\zw\@plus5\p@\@minus5\p@}
%
% \newenvironment{fullwidth}{^^A
%   \list{}{^^A
%   \leftmargin-\marginparwidth
%   \advance\leftmargin-\marginparsep
%   \advance\leftmargin3\zw
%   \listparindent1\zw
%   }\item\relax
% }{^^A
%   \endlist
% }
%
% \clubpenalty\z@
% \widowpenalty\z@
%
% \renewcommand\AltMacroFont{\MacroFont}
% \CodelineNumbered
% \setlength\MacroTopsep{2pt minus \z@}^^A macro迺ｰ蠅�燕蠕後�繧｢繧ｭ
% \def\linenumberstyle#1{{^^A
%   \rmfamily\scriptsize\color[gray]{0.5}^^A
%   \BeginAccSupp{method=hex,ActualText=00}^^A
%   #1\EndAccSupp{}}}
% \def\theCodelineNo{\linenumberstyle{^^A
%     \arabic{CodelineNo}}}
% \def\theFancyVerbLine{\linenumberstyle{^^A
%     \arabic{FancyVerbLine}}}
% \fvset{fontsize=\small, frame=leftline, numbersep=2pt, numbers=left, framerule=0.4pt, framesep=4pt, rulecolor=\color[gray]{0.75}, gobble=4}
%
% \def\PrintDescribeMacro#1{^^A
%   \begingroup \MacroFont
%   \mparwidth{\string #1}^^A
%   \endgroup}
% \let\PrintMacroName\PrintDescribeMacro
% \newcommand*\mparwidth[1]{^^A 繧｢繝ｬ
%   \begingroup
%   \settowidth\@tempdima{#1}^^A
%   \@tempdimb\marginparwidth
%   \advance\@tempdimb-3\p@
%   \ifdim\@tempdima&gt;\@tempdimb
%     ^^A\fontfamily{lmtt}\fontseries{lc}\selectfont
%     \settowidth\@tempdima{#1}^^A
%     \ifdim\@tempdima&gt;\@tempdimb
%       \advance\@tempdima10\p@
%       \divide\@tempdima\p@
%       \divide\@tempdimb\@tempdima
%       \expandafter\scalebox\expandafter{\romannumeral-`0\strip@pt\@tempdimb}[1.0]{#1}^^A
%     \else
%       #1^^A
%     \fi
%   \else
%     #1^^A
%   \fi\endgroup}
%
% \newcount\em@@count
% \chardef\em@@unique=17
% \newif\ifem@@lastand \global\em@@lastandtrue
% \def\endmacro{^^A
%   \ifdim\lastskip=-\em@@unique sp\relax^^A 繧｢繝ｬ
%   \else
%     \immediate\write\@auxout{^^A
%       \noexpand\em@@last{\the\em@@count}}^^A
%   \fi
%   \global\advance\em@@count\@ne
%   \endtrivlist
%   \expandafter\expandafter\expandafter\gdef\expandafter\expandafter\expandafter\em@@savedname\expandafter\expandafter\expandafter{\expandafter\string\saved@macroname}^^A
%   \ifx\em@@list\@undefined
%     \global\expandafter\def\expandafter\em@@list\expandafter{\em@@savedname}^^A
%   \else
%     \ifem@@lastand
%       \expandafter\ltx@GlobalPrependToMacro\expandafter\em@@list\expandafter{\em@@savedname\em@@andlast}^^A
%     \else
%       \expandafter\ltx@GlobalPrependToMacro\expandafter\em@@list\expandafter{\em@@savedname\em@@and}^^A
%     \fi
%     \global\em@@lastandfalse
%   \fi
%   \expandafter\ifx\csname em@@last@\the\em@@count\endcsname\relax
%   \else
%     \em@@print
%     \global\let\em@@list\@undefined
%     \global\em@@lastandtrue
%   \fi
%   \vskip-\em@@unique sp\relax
% }
% \def\em@@and{{\normalfont\@@it\itshape \,, \,}}
% \def\em@@andlast{{\normalfont\@@it\itshape \,,\, and  \,}}
% \def\em@@print{{^^A
%   \par\noindent
%   \small\@@it\itshape (End of definition for {\MacroFont\itshape\em@@list}\,.)\par}}
% \AtEndDocument{^^A
%   \immediate\write\@auxout{^^A
%     \noexpand\em@@last{\the\em@@count}}}
%
% \definecolor{hred}{rgb}{0.5,0,0}
% \definecolor{hblue}{rgb}{0,0,0.45}
% \hypersetup{^^A
%   linkcolor=hred,
%   urlcolor=hblue,
%   pdfauthor=kkotsi,
% }
%
% \GetFileInfo{outoruby.dtx}
% \DeclareRobustCommand\file[1]{\textsf{#1}}
% \DeclareRobustCommand\pkg[1]{\file{#1}}
% \DeclareRobustCommand\cls[1]{\file{#1}}
%
% \newcommand\globstar{^^A
%   \eghostguarded{\texttt{\textit{\large\lower.5ex\hbox{*}}}}}
%
% \newcommand\jkrubypkg{^^A
%   逕ｻ譛溽噪\ajSnowman 縺ｪ繝ｫ繝薙ヱ繝�こ繝ｼ繧ｸ}
% \newcommand\ltjrubypkg{^^A
%   \href{https://github.com/luatexja/luatexja}{\pkg{luatexja-ruby}}}
% \newcommand\pxrbpkg{^^A
%   \href{https://github.com/zr-tex8r/PXrubrica}{\pkg{pxrubrica}}}
%
% \newcommand\X{\(\mathbb{X}\)}
%
% \xspcode`\\=\thr@@
% \xspcode`\{=\@ne
% \xspcode`\}=\tw@
%
% \catcode`\&lt;=\active
% \newcommand\@@it{^^A
%   \fontfamily{ntxlf}\def\ntx@scaled{s*[1]}\selectfont}
% \protected\def&lt;#1&gt;{{\eghostguarded{^^A
%   \@@it
%   \(\langle\)\null\textit{\met@#1_{}\@nil}\null\(\rangle\)}}}
% \DeclareRobustCommand*\meta[1]{&lt;#1&gt;}
% \def\met@#1_#2#3\@nil{^^A
%   \ltx@ifempty{#3}{#1}{^^A
%     \c@@arg #1$_{#2}$\met@#3\@nil}}
% \let\@@outorb@opt@opt\outorb@opt@opt
% \def\outorb@opt@opt#1\outorb@nil{^^A
%   \begingroup
%     \edef&lt;{\string&lt;}^^A
%     \protected@edef\x{#1}^^A
%   \expandafter\endgroup\expandafter\@@outorb@opt@opt\x\outorb@nil}
%
% \DeclareRobustCommand*\cs{^^A
%   \ltx@ifnextchar\bgroup{\cs@@{}}{\cs@@@{}}}
% \def\cs@@#1#2{^^A
%   \eghostguarded{\texttt{\bslash #2}}#1}
% \def\cs@@@#1#2{\cs@@{#1}{\expandafter\@gobble\string#2}}
% \DeclareRobustCommand*\@cs{^^A
%   \ltx@ifnextchar\bgroup{\cs@@\c@@arg}{\cs@@@\c@@arg}}
%
% \DeclareRobustCommand\A{^^A
%   \ltx@ifnextchar[\oarg\marg}
% \newcommand*\marg[1]{\eghostguarded{^^A
%   \texttt\{\c@@arg #1\texttt\}}}
% \def\oarg[#1]{\eghostguarded{^^A
%   \texttt{[\c@@arg #1]}}}
% \def\CS{\cs{CS}}
% \def\CSa{\cs{CSa}}
% \def\CSb{\cs{CSb}}
% \def\pxrr@inter{\cs{pxrr@inter}\c@@arg}
% \def\pxrr@pre{\cs{pxrr@pre}\c@@arg}
% \def\pxrr@post{\cs{pxrr@post}\c@@arg}
% \def\c@@arg{^^A
%   \ltx@ifnextchar\bgroup{\c@@@rg}{^^A
%     \ltx@ifnextchar[{\c@@@@rg}{}}}
% \def\c@@@rg#1{^^A
%   \marg{#1}\c@@arg}
% \def\c@@@@rg[#1]{^^A
%   \oarg[#1]\c@@arg}
%
% \newcommand\ttindent{\mbox{\texttt{\space\space}}}
% \newcommand*\ttend[1]{\texttt\%\\^^A
%   \@@ttend{#1}}
% \def\@@ttend#1{^^A
%   \ifnum#1&gt;\z@
%     \ttindent
%     \begingroup \@tempcnta=#1\relax \advance\@tempcnta\m@ne
%     \expandafter\endgroup\expandafter\@@ttend\expandafter{\the\@tempcnta}^^A
%   \fi\c@@arg}
%
% \newcommand*\desccs[1]{\par
%   \needspace{6\baselineskip}^^A
%   \noindent
%   \if*\noexpand#1^^A
%     \expandafter\DescribeMacro
%   \else
%     \DescribeMacro{#1}^^A
%     \cs#1^^A
%     \expandafter\c@@arg
%   \fi}
%
% \newcommand*\@@argbrace[1]{^^A
%   \@ifnextchar\bgroup{^^A
%     \@@argbrace@b{#1}}{#1}}
% \def\@@argbrace@b#1#2{#1{{#2}}}
%
% \newcommand*\headitem[1]{^^A
%   \if@@movemarginpar \@@movemarginparfalse \fi
%   \par\noindent\hb@xt@\z@{\hss\mparwidth{#1}\hskip\labelsep}\ignorespaces}
% \newcommand*\inarg[1]{^^A
%   \headitem{\texttt{\##1}:}\c@@arg}
% \newcommand*\result{^^A
%   \@@argbrace\@@result}
% \def\@@result#1{^^A
%   \headitem{\texttt{\cs#1} \textrightarrow}\c@@arg}
% \newcommand*\intl{^^A
%   \@@argbrace\@@intl}
% \def\@@intl#1{^^A
%   \headitem{\texttt{\cs#1}:}\c@@arg}
%
% \newif\if@@movemarginpar
% \newcommand\movempar{\par\@@movemarginpartrue\vskip-\baselineskip\leavevmode}
%
% \newcommand*\argn[1]{^^A
%   \texttt{\##1}}
%
% \title{\pkg{outoruby}繝代ャ繧ｱ繝ｼ繧ｸ}
% \let\@@@@@makefntext\@makefntext
% \let\@@@@@makefnmark\@makefnmark
% \let\thanks\footnote
% \author{kkotsi^^A
%   \let\@makefntext\@@@@@makefntext
%   \def\@@fnmark{}^^A
%   \footnote{繝ｪ繝昴ず繝医Μ縺ｯ\url{https://codeberg.org/kkotsi/outoruby}縲�}}^^A
% \date{\filedate\ \fileversion}
% \begin{savenotes}
% \HyOrg@maketitle
% \end{savenotes}
% \begin{abstract}
%   \pxrbpkg 繧偵Λ繝��縺励�
%   \outoruby{閾ｪ蜍扶{縺�|縺ｩ縺�}縺ｧ\outoruby[||-][-|]{陦碁�ｭ蠖｢}{縺弱ｇ縺�|縺ｨ縺�|縺代＞}��
%   \outoruby{陦御ｸｭ蠖｢}{縺弱ｇ縺�|縺｡繧�≧|縺代＞}�十outoruby[-||][|-]{陦梧忰蠖｢}{縺弱ｇ縺�|縺ｾ縺､|縺代＞}
%   繧箪outoruby{蛻�}{縺閤繧浬outoruby{譖ｿ}{縺急縺医ｉ繧後ｋ繧九Ν繝貼outoruby[-:]{蜻ｽ莉､}{繧√＞|繧後＞}\cs{outoruby}繧�
%   \outoruby[&lt;&gt;]{謠蝉ｾ孺{縺ｦ縺л縺阪ｇ縺�}縺吶ｋ縲�
%   \outoruby{螳溯｣�}{縺倥▲|縺昴≧}縺ｯ\cs{discretionary}縺ｫ繧医ｋ縲�
% \end{abstract}
%
% \renewcommand*{\l@subsection}{\@dottedtocline{2}{1\zw}{2\zw}}
% \renewcommand*{\l@subsubsection}{\@dottedtocline{3}{2\zw}{3\zw}}
% \section*{\contentsname\@mkboth{\contentsname}{\contentsname}}
% \begin{multicols}{2}
%   \@starttoc{toc}
% \end{multicols}
%
% \section{閭梧勹}
%
% 蠕捺擂縲∵律譛ｬ隱杤LaTeX 迺ｰ蠅�↓縺翫＞縺ｦ繝ｫ繝薙ｒ螳溽樟縺吶ｋ繝代ャ繧ｱ繝ｼ繧ｸ縺ｨ縺励※縺ｯ
% \begin{savenotes}
% \begin{tasks}[
%   label=\arabic*.,
%   item-indent={2\zw},
%   column-sep={1\zw}, ^^A 3x+(3-1)y=47縺ｮ閾ｪ辟ｶ謨ｰ隗｣縺ｮ縺�■譛蟆上�y \textwidth=47\zw
% ](3)
%   \task \href{https://github.com/texjporg/jsclasses}{\pkg{okumacro}}
%   \task \href{http://xymtex.com/fujitas2/texlatex/index.html\#tategumi}{\pkg{furikana}}^^A
%     \footnote{髟ｷ繧峨￥繝｡繝ｳ繝�リ繝ｳ繧ｹ縺輔ｌ縺ｦ縺翫ｉ縺壹∵隼螟牙�驟榊ｸ�ｭ峨ｂ隱阪ａ繧峨ｌ縺ｦ縺ｪ縺��\TeX\ Live譛ｪ蜿朱鹸縲�}
%   \task \href{http://xymtex.com/fujitas2/texlatex/index.html\#tategumi}{\pkg{furiknkt}}^^A
%     \footnote{荳翫↓蜷後§縲�}
%   \task \href{https://www.nongnu.org/cjk/}{\pkg{ruby}��\pkg{CJK}繝代ャ繧ｱ繝ｼ繧ｸ�噂&lt;}^^A
%     \footnote{譌･譛ｬ隱槭�繝ｫ繝薙→縺励※縺ｯ菴ｿ縺�∋縺阪〒縺ｯ縺ｪ縺�→縺輔ｌ縺ｦ縺�ｋ縲�}
%   \task \pxrbpkg
%   \task \ltjrubypkg
% \end{tasks}
% 遲峨′遏･繧峨ｌ縺ｦ縺�◆縲�
% 縺薙ｌ繧峨�縺�■陦悟�蜑ｲ蜿ｯ閭ｽ縺ｪ繝ｫ繝灘多莉､繧呈署萓帙☆繧九�縺ｯ\pxrbpkg 縺ｨ\ltjrubypkg 縺ｮ縺ｿ縺ｧ縺ゅｊ縲√◎繧後◇繧梧ｬ｡縺ｮ蛻ｶ邏�′縺ゅｋ��
% \end{savenotes}
% \begin{description}
%   \item[\pxrbpkg] \mbox{}\\*
%     繝｢繝弱Ν繝薙↓蟶ｰ逹縺ｧ縺阪ｋ蝣ｴ蜷医↓縺励°陦悟�蜑ｲ縺ｧ縺阪↑縺��
%     陦碁�ｭ蠖｢�剰｡御ｸｭ蠖｢�剰｡梧忰蠖｢繧定�蜍輔〒蛻�ｊ譖ｿ縺医ｉ繧後↑縺��
%   \item[\ltjrubypkg] \mbox{}\\*
%     \LuaLaTeX 縺ｧ縺励°菴ｿ縺医↑縺��
% \end{description}
%
% 縺励◆縺後▲縺ｦ縲�(u)\pLaTeX 縺ｧ縺ｯ陦悟�蜑ｲ縺ｫ蠢懊§縺ｦ閾ｪ蜍輔〒蠖｢縺悟､峨ｏ繧九Ν繝薙�螳溽樟縺ｧ縺阪★縲�
% 荳蠎ｦ邨�沿縺励※縺ｿ縺滉ｸ翫〒謇句虚縺ｧ隱ｿ謨ｴ縺励↑縺代ｌ縺ｰ縺ｪ繧峨↑縺九▲縺溘�
%
% \texlevel
% (u)\pLaTeX 縺ｫ縺翫＞縺ｦ閾ｪ蜍募�繧頑崛縺医Ν繝薙ｒ螳溽樟縺吶ｋ莉･蜑阪�隧ｦ縺ｿ縺ｨ縺励※縺ｯ縲�
% \pxrbpkg 縺ｮ菴懆�〒縺ゅｋ蜈ｫ逋ｻ蟠�ｹ区ｰ擾ｼ�ZR豌擾ｼ峨↓繧医ｋ讀懆ｨ弱′繝槭け繝ｭ繝�う繝ｼ繧ｿ繝ｼ
% 縲圭href{https://zrbabbler.hatenablog.com/entry/20110724/1311503096}{繝ｫ繝薙�縺倥ａ縺ｾ縺励◆��PXrubrica 繝代ャ繧ｱ繝ｼ繧ｸ��(2)}縲阪�
% 縺ｾ縺溘◎縺薙°繧峨Μ繝ｳ繧ｯ縺後≠繧�
% \TeX\ Q \&amp; A縲圭href{https://okumuralab.org/~okumura/texfaq/qa/55536.html}{Re: 繝槭け繝ｭ縺ｧ縺ｮ陦碁�ｭ繝ｻ陦梧忰蛻､螳壽婿豕扶縲�
% 縺ｫ隕九ｉ繧後ｋ縲�
% 縺薙ｌ繧峨�繝壹�繧ｸ縺ｧ縺ｯ\cs{discretionary}縺翫ｈ縺ｳ\pdfTeX 縺ｮ諡｡蠑ｵ讖溯���\epTeX 縺ｫ繧ょｮ溯｣�ｸ医∩�峨〒縺ゅｋ\cs{pdfsavepos}縺ｫ縺､縺�※讀懆ｨ弱＠縺滉ｸ翫〒縲�
% \cs{discretionary}縺ｯ譌･譛ｬ隱槭Ν繝薙�陦悟�蜑ｲ縺ｫ縺ｯ蜉帑ｸ崎ｶｳ�茨ｼ�ｼ峨□縺ｨ縺励※縺�ｋ縲�
% 諡｡蠑ｵ讖溯�縺ｫ縺､縺�※縺ｯ\pxrbpkg 縺ｫ繧ゅ％繧後ｉ繧剃ｽｿ縺�％縺ｨ繧定ｦ玖ｶ翫＠縺歃cs{rubyuseextra}縺ｪ縺ｩ縺ｮ繧ｳ繝ｼ繝峨�逞戊ｷ｡縺後≠繧九′縲―href{https://zrbabbler.hatenablog.com/entry/20120430/1335811160}{谿句ｿｵ縺ｪ縺後ｉ螳溯｣�＆繧後※縺�↑縺м縲�
%
% \emph{縺励°縺励↑縺後ｉ\cs{discretionary}縺ｫ繧医▲縺ｦ譌･譛ｬ隱槭Ν繝薙ｒ陦悟�蜑ｲ縺輔○繧九％縺ｨ縺ｯ蜿ｯ閭ｽ縺ｧ縺ゅｊ縲∵悽繝代ャ繧ｱ繝ｼ繧ｸ縺ｯ縺昴ｌ繧定ｨｼ譏弱☆繧九◆繧√↓螳溯｣�＆繧後※縺�ｋ縲�}
%
% \section{菴ｿ縺�婿}
%
% 蜊倥↓隱ｭ縺ｿ霎ｼ繧縲ゅが繝励す繝ｧ繝ｳ縺ｯ縺ｪ縺��
%
% \begin{Verbatim}
%   \usepackage{outoruby}
% \end{Verbatim}
%
% \pkg{outoruby}縺ｯ\pxrbpkg 縺後し繝昴�繝医☆繧倶ｻｻ諢上�繧ｨ繝ｳ繧ｸ繝ｳ�上ヵ繧ｩ繝ｼ繝槭ャ繝医ｒ繧ｵ繝昴�繝医☆繧欺footnote{^^A
%   \pxrbpkg 縺ｯ迴ｾ蝨ｨ\LaTeX 縺励°繧ｵ繝昴�繝医＠縺ｦ縺�↑縺�ゅ∪縺歃pkg{outoruby}縺ｯ逶ｸ莠貞盾辣ｧ縺ｮ莉慕ｵ�∩縺御ｽｿ縺医ｋ縺薙→繧貞燕謠舌→縺励※縺�ｋ縲�}縲�
%
% 縺ｾ縺歃pxrbpkg 縺ｫ蜉�縺�\pkg{ltxcmds}縲―pkg{infwarerr}縺ｫ萓晏ｭ倥☆繧九ゅ＞縺壹ｌ繧�\TeX\ Live蜿朱鹸貂医∩縲�
%
% 譛ｬ譁�嶌縺ｮ險倩ｿｰ縺ｯ\pxrbpkg\ v1.3e (2023/03/01) 縺ｫ蝓ｺ縺･縺上�
%
% \bigskip
%
% 邁｡蜊倥↓縺ｯ谺｡縺ｮ繧医≧縺ｫ菴ｿ縺�ｼ�
%
% \begin{Verbatim}
%   縺ゅｌ縺ｯ\outoruby[&lt;j|]{雜�ｶ�ｶ�ｶ�ｶ�ｼｩ邏嘲{縺｡繧�≧|縺｡繧�≧|縺｡繧�≧|縺｡繧�≧|縺｡繧�≧|縺ｩ|縺阪ｅ縺�}髮ｪ縺�繧九∪縲�
% \end{Verbatim}
% \marginfig{^^A
%   縺ゅｌ縺ｯ\outoruby[&lt;j|]{雜�ｶ�ｶ�ｶ�ｶ�ｼｩ邏嘲{縺｡繧�≧|縺｡繧�≧|縺｡繧�≧|縺｡繧�≧|縺｡繧�≧|縺ｩ|縺阪ｅ縺�}髮ｪ縺�繧九∪縲�
% }
%
% \oarg[\string&lt;j|]縺ｮ諢丞袖縺ｯ\pxrbpkg 縺ｮ\cs{jruby}縺ｨ蜷後§縲�
%
% \emph{豁｣縺励＞蜃ｺ蜉帙ｒ蠕励ｋ縺ｫ縺ｯ隍�焚蝗槭�蜃ｦ逅�′蠢�ｦ±縺ｧ縺ゅｋ縺薙→縺ｫ豕ｨ諢上�
%
% \subsection{蜻ｽ莉､}
%
% \desccs\outoruby[&lt;option_1&gt;][&lt;option_2&gt;][&lt;pre-space&gt;][&lt;post-space&gt;]{&lt;body&gt;}{&lt;ruby&gt;}
%
% &lt;option_1&gt;縲�&lt;option_2&gt;縲�&lt;body&gt;縲�&lt;ruby&gt;縺ｯ\pxrbpkg 縺ｧ縺ｮ\@cs\jruby[&lt;option&gt;]{&lt;body&gt;}{&lt;ruby&gt;}縺ｫ蟇ｾ蠢懊☆繧九�
% &lt;option&gt;縺ｫ蟇ｾ蠢懊☆繧九ｂ縺ｮ縺�2縺､縺ゅｋ縺後√％繧後�縺昴ｌ縺槭ｌ谺｡縺ｮ繧医≧縺ｫ菴ｿ繧上ｌ繧具ｼ�
%
% \begin{center}
% \begin{tabular}{lccc}
%   \toprule
%   繝ｫ繝灘ｽ｢ &amp; 蜑埼ｲ蜈･險ｭ螳� &amp; 蠕碁ｲ蜈･險ｭ螳� &amp; 莉悶�險ｭ螳� \\ \midrule
%   陦御ｸｭ蠖｢ &amp; &lt;option_1&gt;縺ｮ蜑埼ｲ蜈･險ｭ螳� &amp; &lt;option_1&gt;縺ｮ蠕碁ｲ蜈･險ｭ螳� &amp; &lt;option_1&gt; \\
%   陦碁�ｭ蠖｢ &amp; &lt;option_{\emph{2}}&gt;縺ｮ蜑埼ｲ蜈･險ｭ螳� &amp; &lt;option_1&gt;縺ｮ蠕碁ｲ蜈･險ｭ螳� &amp; &lt;option_1&gt; \\
%   陦梧忰蠖｢ &amp; &lt;option_1&gt;縺ｮ蜑埼ｲ蜈･險ｭ螳� &amp; &lt;option_{\emph{2}}&gt;縺ｮ蠕碁ｲ蜈･險ｭ螳� &amp; &lt;option_1&gt; \\
%   \bottomrule
% \end{tabular}
% \end{center}
%
% 縺､縺ｾ繧翫�&lt;option_2&gt;縺ｮ蜑埼ｲ蜈･險ｭ螳壹∝ｾ碁ｲ蜈･險ｭ螳壻ｻ･螟悶�辟｡隕悶＆繧後ｋ縲�
%
% &lt;pre-space&gt;縺ｯ繝ｫ繝薙�蜑阪↓鄂ｮ縺九ｌ繧玖｡悟�蜑ｲ縺ｫ繧医▲縺ｦ豸医∴繧狗ｩｺ逋ｽ縲�
% &lt;post-space&gt;縺ｯ繝ｫ繝薙�蠕後↓鄂ｮ縺九ｌ繧玖｡悟�蜑ｲ縺ｫ繧医▲縺ｦ豸医∴繧狗ｩｺ逋ｽ縺ｧ縺ゅｋ縲�
% 隧ｳ縺励￥縺ｯ\ref{sec:prepost}遽繧貞盾辣ｧ縲�
%
% 蛻･蜷阪�螳夂ｾｩ縺励↑縺�ょｿ�ｦ√〒縺ゅｌ縺ｰ閾ｪ蛻�〒繝励Μ繧｢繝ｳ繝悶Ν縺ｧ
% \begin{Verbatim}
%   \newcommand\ruby{\outoruby}
% \end{Verbatim}
% 縺ｮ繧医≧縺ｫ縺吶ｋ縺薙→縲�
%
% \desccs*\outorb@outoruby
% \cs{outoruby}縺ｨ遲我ｾ｡縲�
%
% \medskip
%
% \desccs\outorubysetup{&lt;option_2&gt;}
%
% \cs{outoruby}縺ｮ&lt;option_2&gt;縺ｮ譌｢螳壼､繧定ｨｭ螳壹☆繧九�
% 迴ｾ蝨ｨ縺ｧ縺ｯ繝代ャ繧ｱ繝ｼ繧ｸ隱ｭ縺ｿ霎ｼ縺ｿ譎ゅ↓\verb+||-||+縺梧欠螳壹＆繧後ｋ縺後―emph{縺薙�蛻晄悄蛟､縺ｯ莉雁ｾ後�\pxrbpkg 縺ｮ譖ｴ譁ｰ縺ｫ繧医ｊ螟画峩縺吶ｋ蜿ｯ閭ｽ諤ｧ縺後≠繧急縲�
% 蛻晄悄蛟､繧貞､画峩縺吶ｋ蝣ｴ蜷医〒繧ゅ∝�譛溯ｨｭ螳壹〒閾ｪ蜍輔〒蠖｢縺悟�繧頑崛繧上ｋ轤ｹ縺ｯ螟画峩縺励↑縺�ｺ亥ｮ壹〒縺ゅｋ縲�
% \ref{sec:noprot}遽縺ｮ豕ｨ諢上ｂ蜿ら�縲�
%
% 閾ｪ蜍輔〒陦碁�ｭ蠖｢�剰｡梧忰蠖｢縺ｫ縺ｪ繧九�縺ｯ縺薙�譌｢螳壼､縺ｮ縺溘ａ縺ｧ縺ゅｊ縲√◆縺ｨ縺医�\verb+|-|+縺ｫ螟画峩縺吶ｋ縺ｨ縲∬｡悟�蜑ｲ縺励◆縺ｨ縺励※繧り�蜍輔〒蠖｢縺悟�繧頑崛繧上ｉ縺ｪ縺上↑繧欺footnote{^^A
%   縺､縺ｾ繧雁�縺ｮ陦ｨ縺ｧ縲瑚｡碁�ｭ蠖｢縲阪→縺励※縺�◆縺ｨ縺薙ｍ縺ｯ豁｣縺励￥縺ｯ縲瑚｡悟�蜑ｲ縺檎匱逕溘＠縺溷�ｴ蜷医�縲∬｡悟�蜑ｲ蠕後�陦碁�ｭ縺ｮ繝ｫ繝薙�蠖｢縲阪→縺�≧諢丞袖縺ｧ縺ゅｋ縲ゅ瑚｡御ｸｭ蠖｢縲阪√瑚｡梧忰蠖｢縲阪↓縺､縺�※繧ょ酔縺倥�
% }縲�
%
% 縺薙�蜻ｽ莉､縺ｫ繧医ｋ險ｭ螳壹�邏ｯ遨阪☆繧九ゅ☆縺ｪ繧上■縲―verb+\outorubysetup{-}+縺ｨ縺励※繧りｨｭ螳壹�\verb+||-||+縺ｮ縺ｾ縺ｾ縺ｧ縺ゅｋ縲�
% 蛟､繧呈峩譁ｰ縺励◆縺代ｌ縺ｰ\verb+\outorubysetup{&lt;-&gt;}+縺ｮ繧医≧縺ｫ譏守､ｺ逧�↓蛟､繧呈欠螳壹☆繧句ｿ�ｦ√′縺ゅｋ縲�
% 縺ｪ縺翫�ｲ蜈･繧定ｨｱ蜿ｯ縺吶ｋ險ｭ螳壹�繝ｫ繝薙′陦悟�蜑ｲ菴咲ｽｮ縺ｧ迚磯擇螟悶∈縺ｯ縺ｿ蜃ｺ繧九％縺ｨ繧呈э蜻ｳ縺吶ｋ縺ｮ縺ｧ縲―verb+||-||+縺ｨ\verb+|-|+莉･螟悶�險ｭ螳壹ｒ陦後≧讖滉ｼ壹�縺ｪ縺�□繧阪≧縲�
%
% \LaTeX 縺ｮ繧ｰ繝ｫ繝ｼ繝怜�縺ｧ菴ｿ縺｣縺溷�ｴ蜷医∬ｨｭ螳壹�繧ｰ繝ｫ繝ｼ繝怜､悶↓縺ｯ蜿肴丐縺輔ｌ縺ｪ縺��
%
% \desccs*\outorb@outorubysetup
% \cs{outorubysetup}縺ｨ遲我ｾ｡縲�
%
% \medskip
%
% \desccs\outorubyhyphenbreakable[&lt;i&gt;]
%
% \ref{sec:hyphpen}隱ｬ縺ｧ蜀榊ｺｦ隱ｬ譏弱☆繧九′縲―cs{outoruby}縺ｯ繝上う繝輔ロ繝ｼ繧ｷ繝ｧ繝ｳ髢｢菫ゅ�險ｭ螳壹�蠖ｱ髻ｿ繧貞女縺代ｋ縲�
% 繧ゅ＠繧ゅワ繧､繝輔ロ繝ｼ繧ｷ繝ｧ繝ｳ縺御ｸ蛻�匱逕溘＠縺ｪ縺�ｈ縺�ｨｭ螳壹＠縺溷�ｴ蜷医―cs{outoruby}縺ｮ繝ｫ繝謎ｸｭ縺ｧ縺ｮ陦悟�蜑ｲ繧らｦ∵ｭ｢縺輔ｌ繧句庄閭ｽ諤ｧ縺後≠繧欺footnote{^^A
%   \vadjust{^^A
%     \hb@xt@\z@{\hskip-2\zw\smash{\dbend}\hss}}^^A
%   險ｭ螳壽婿豕輔↓繧医ｋ縲�\cs{hyphenpenalty}縺ｪ縺ｩ縺ｮ蠖ｱ髻ｿ縺ｯ蜿励￠繧九′\cs{lefthyphenmin}縺ｪ縺ｩ縺ｮ蠖ｱ髻ｿ縺ｯ蜿励￠縺ｪ縺�りｦ√�\cs{discretionary}縺ｪ縺ｮ縺ｧ縲�}縲�
% \cs{outorubyhyphenbreakable}繧貞ｮ溯｡後☆繧九％縺ｨ縺ｧ縲√％縺ｮ險ｭ螳壹′謾ｹ蝟�〒縺阪ｋ縺九ｂ縺励ｌ縺ｪ縺��
% &lt;i&gt;縺ｯ蛻�牡縺ｮ縺励ｄ縺吶＆縺ｧ縲―cs{nolinebreak}縺ｪ縺ｩ縺ｨ蜷後§謖�ｮ壹〒縺ゅｋ縲�
% 縺吶↑繧上■縲―texttt0繧Ыtexttt1縺ｪ縺ｩ蟆上＆繧√�謨ｰ蟄励ｒ謖�ｮ壹☆繧九→\cs{outoruby}荳ｭ縺ｧ縺ｮ陦悟�蜑ｲ縺瑚ｵｷ縺阪ｄ縺吶￥縺ｪ繧九ゅ◆縺�縺励∝酔譎ゅ↓繝上う繝輔ロ繝ｼ繧ｷ繝ｧ繝ｳ繧ら匱逕溘＠繧�☆縺上↑繧九�縺ｧ豕ｨ諢上＆繧後◆縺��
% 逵∫払譎ゅ�\texttt0縺梧欠螳壹＆繧後◆謇ｱ縺�↓縺ｪ繧九�
% \emph{螳溯｡梧凾縺ｮ謖吝虚縺ｮ隧ｳ邏ｰ縺ｯ縺ｾ縺｣縺溘￥蝗ｺ縺ｾ縺｣縺ｦ縺ｪ縺��}
%
% \desccs*\outorb@outorubyhyphenbreakable
% \cs{outorubyhyphenbreakable}縺ｨ遲我ｾ｡縲�
%
% \medskip
%
% \desccs\outorb@discretionary{\\\ttindent\texlevel
%   \A{&lt;pre-break_1&gt;}\A{&lt;post-break_1&gt;}\\\ttindent
%   \A{&lt;pre-break_2&gt;}\A{&lt;post-break_2&gt;}\\\ttindent
%   \texttt\vdots\\\ttindent
%   \A{&lt;pre-break_n&gt;}\A{&lt;post-break_n&gt;}\\
% }{&lt;no-break&gt;}
%
% \smallskip
%
% 豌玲戟縺｡逧�↓縺ｯ谺｡縺ｨ遲我ｾ｡��
%
% \noindent
% \@cs\discretionary{&lt;pre-break_1&gt;}{&lt;post-break_1&gt;}{\ttend1
%   \@cs\discretionary{&lt;pre-break_2&gt;}{&lt;post-break_2&gt;}{\ttend1
%   \texttt\vdots\\\@@ttend2
%     \@cs\discretionary{&lt;pre-break_n&gt;}{&lt;post-break_n&gt;}{&lt;no-break&gt;}\texttt\ldots}}
%
% \subsection{豕ｨ諢冗せ}
%
% \paragraph{逶ｸ莠貞盾辣ｧ}
%
% \cs{outoruby}繧Ыcs{outorb@discretionary}繧剃ｽｿ縺｣縺溷�ｴ蜷医〒陦悟�蜑ｲ縺檎匱逕溘＠縺溷�ｴ蜷医∵ｭ｣縺励＞蜃ｺ蜉帙ｒ蠕励ｋ縺ｫ縺ｯ
% 隍�焚蝗槭�\LaTeX 縺ｮ蜃ｦ逅�′蠢�ｦ√↓縺ｪ繧句�ｴ蜷医′縺ゅｋ縲�
% \marginfig{\def\outorb@aux@write#1{}\raggedleft\fboxsep5\p@\fbox{\parbox{2.5\zw}{\leavevmode
%   \outoruby{驥崎､�女邊ｾ}{縺｡繧�≧|縺ｵ縺楯縺倥ｅ|縺帙＞}}}}^^A
% \marginpar{\vskip3pt}^^A
% \marginfig{\@namedef{outorb@disc@break@\the\outorb@disc@count}{}^^A
%   \raggedleft\fboxsep5\p@\fbox{^^A
%   \outoruby{襍､譛ｨ}{縺ゅ°|縺枝繝輔ぃ繧､繝ｫ}}^^A
% 蜊∝�縺ｪ蝗樊焚\LaTeX 繧定ｵｰ繧峨○縺ｦ縺ｪ縺��ｴ蜷医�蟾ｦ縺ｮ蝗ｳ荳翫�繧医≧縺ｫ譁�ｭ励′驥阪↑縺｣縺溘ｊ縲√≠繧九＞縺ｯ蟾ｦ縺ｮ蝗ｳ荳九�繧医≧縺ｫ繝ｫ繝薙♀繧医�隕ｪ譁�ｭ励′陦ｨ遉ｺ縺輔ｌ縺ｪ縺九▲縺溘ｊ縺吶ｋ縲�
% 縺薙�蝣ｴ蜷� ``Label(s) may have changed.'' 縺ｮ隴ｦ蜻翫′蜃ｺ縺ｦ縺�ｋ縺ｯ縺壹↑縺ｮ縺ｧ縲∬ｭｦ蜻翫′蜃ｺ縺ｪ縺上↑繧九∪縺ｧ繧ｿ繧､繝励そ繝�ヨ繧堤ｹｰ繧願ｿ斐○縺ｰ
% 豁｣蟶ｸ縺ｪ蜃ｺ蜉帙ｒ蠕励ｉ繧後ｋ縲�
%
% \pkg{outoruby}莉･螟悶�隕∫ｴ�縺ｫ繧医ｋ螟画峩縺後↑縺��ｴ蜷医―emph{\pkg{outoruby}縺ｮ逶ｸ莠貞盾辣ｧ縺ｯ蠢�★1蝗槭〒蜿取據縺吶ｋ}�医＠縺ｪ縺代ｌ縺ｰ繝舌げ縺ｧ縺ゅｋ�峨�
% 縺励◆縺後▲縺ｦ\pkg{outoruby}莉･螟悶↓逶ｸ莠貞盾辣ｧ繧堤畑縺�※縺ｪ縺��ｴ蜷医�2蝗槭�繧ｿ繧､繝励そ繝�ヨ縺ｧ譛溷ｾ�＆繧後ｋ蜃ｺ蜉帙ｒ蠕励ｉ繧後ｋ縺ｯ縺壹〒縺ゅｋ縲�
%
% 縺ｾ縺溘―cs{outoruby}縺ｮ蠑墓焚縺ｯ隍�焚蝗槫ｮ溯｡後＆繧後ｋ縺薙→縺ｫ繧よｳｨ諢上�
%
% \paragraph{螳溯｡梧凾髢党
%
% \cs{outoruby}縺ｯ陦悟�蜑ｲ繧貞ｮ溽樟縺吶ｋ縺溘ａ縲√後☆縺ｹ縺ｦ縺ｮ蜿ｯ閭ｽ縺ｪ繝ｫ繝薙�邨�∪繧梧婿縲阪ｒ荳蠎ｦ邨�沿縺励※縺�ｋ縲�
% 縺励◆縺後▲縺ｦ縺昴�蝗樊焚縺�縺曾cs{jruby}蜻ｽ莉､縺悟ｮ溯｡後＆繧後ｋ縺薙→縺ｨ縺ｪ繧翫∝�逅�↓譎る俣縺後°縺九ｋ縲�
% 縺溘→縺医�
% \begin{Verbatim}
%   \outoruby{隕冶ｦｴ}{縺慾縺後ｓ}
% \end{Verbatim}
% 縺ｧ縺ｯ
% \begin{tasks}[
%   label=\arabic*.,
%   item-indent={2\zw},
%   column-sep={1\zw},
% ](2)
%   \task \@cs\jruby[-]{隕冶ｦｴ}{縺慾縺後ｓ}
%   \task \@cs\jruby[-||]{隕冶ｦｴ}{縺慾縺後ｓ}
%   \task \@cs\jruby[-||]{隕凡{縺抑
%   \task \@cs\jruby[||-]{隕ｴ}{縺後ｓ}
%   \task \@cs\jruby[||-]{隕冶ｦｴ}{縺慾縺後ｓ}
% \end{tasks}
% 縺ｮ5蝗槭�\cs{jruby}縺悟ｮ溯｡後＆繧後ｋ縺薙→縺ｫ縺ｪ繧九�
%
% \paragraph{遯∝�遖∵ｭ｢}\label{sec:noprot}
%
% \leavevmode\marginfig{\raggedleft\fboxsep5\p@\fbox{^^A
%   \jruby[||-]{蟾ｦ}{縺扶縺ｨ\jruby[-||]{豁ｻ}{縺抑}}^^A
% \pxrbpkg 縺ｮ\cs{jruby}蜻ｽ莉､縺ｯ
% 繝ｫ繝薙�譁ｹ縺瑚ｦｪ譁�ｭ励ｈ繧顔洒縺��縺ｫ遯∝�遖∵ｭ｢縺梧欠螳壹＆繧後◆蝣ｴ蜷医∝ｷｦ縺ｮ繧医≧縺ｫ縺ｪ繧九�
% \begin{Verbatim}
%   \jruby[||-]{蟾ｦ}{縺扶縺ｨ\jruby[-||]{豁ｻ}{縺抑
% \end{Verbatim}
%
% 譛溷ｾ�＆繧後ｋ蜃ｺ蜉帙�縺翫◎繧峨￥蜿ｳ縺ｮ繧医≧縺ｪ繧ゅ�縺�繧阪≧�嘴\hfill\fboxsep5\p@\raisebox{3\p@}[\z@]{\fbox{^^A
%   \pxpatchon
%   \jruby[||-]{蟾ｦ}{縺扶縺ｨ\jruby[-||]{豁ｻ}{縺抑}}\hfill\hskip\z@}
%
% \cs{jruby}繧堤峩謗･逕ｨ縺�ｋ蝣ｴ蜷医↓縺ｯ縲√Ν繝薙′隕ｪ譁�ｭ励ｈ繧顔洒縺��ｴ蜷医↓縺ｯ遯∝�遖∵ｭ｢繧呈欠螳壹＠縺ｪ縺�ｈ縺�ｳｨ諢上☆繧後�繧医＞縺�縺代□縺後�
% \cs{outoruby}縺ｯ&lt;option_2&gt;縺ｮ謖�ｮ壹↓蝓ｺ縺･縺�※繝ｫ繝薙→隕ｪ譁�ｭ励�髟ｷ縺輔�蟾ｮ繧定��縺帙★縺ｫ縲∽ｸ蠕九〒縺吶∋縺ｦ縺ｮ陦悟�蜑ｲ縺檎匱逕溘☆繧九Ν繝薙↓蟇ｾ縺礼ｪ∝�遖∵ｭ｢繧呈欠螳壹☆繧九�
% 縺昴�縺溘ａ縲√％縺ｮ謖吝虚縺悟撫鬘後↓縺ｪ繧九�
%
% 縺薙ｌ縺ｫ髢｢縺吶ｋ\pxrbpkg 縺ｮ菴懆�↓繧医ｋ險蜿翫′\X 荳翫↓縺ゅｋ��
%
% \begin{fullwidth}\begin{small}\begin{tasks}[
%   style=itemize,
%   item-indent={2\zw},
%   column-sep={1\zw},
% ](2)
%   \task \url{https://x.com/zr_tex8r/status/1310112648441131010}
%   \task \url{https://x.com/zr_tex8r/status/1310115177279361024}
%   \task \url{https://x.com/zr_tex8r/status/1518785815039545344}
%   \task \url{https://x.com/zr_tex8r/status/1518811402034577408}
%   \task \url{https://x.com/zr_tex8r/status/1518812096053473280}
%   \task \url{https://x.com/zr_tex8r/status/1518871129598795777}
%   \task \url{https://x.com/zr_tex8r/status/1518872316377059328}
% \end{tasks}\end{small}\end{fullwidth}
%
% 縺ｾ縺ｨ繧√ｋ縺ｨ
% \begin{itemize}
%   \item 閾ｪ蜍輔〒陦碁�ｭ�剰｡梧忰繧貞愛螳壹〒縺阪↑縺��縺ｧ縲∫ｪ∝�遖∵ｭ｢縺ｯ蠢�ｦ√↑蝣ｴ蜷医↓縺ｮ縺ｿ謇句虚縺ｧ謖�ｮ壹☆繧九→縺�≧諠ｳ螳�
%   \item 縺昴�縺溘ａ縲√Ν繝薙′隕ｪ譁�ｭ励ｈ繧顔洒縺��ｴ蜷医↓遯∝�縺檎ｦ∵ｭ｢縺輔ｌ繧九�縺ｯ諠ｳ螳壼､�
%   \item 遯∝�遖∵ｭ｢縺檎ｪ∝�縺励↑縺��ｴ蜷医↓蠖ｱ髻ｿ縺吶ｋ縺ｮ縺ｯ縺翫°縺励＞縺後∽ｿｮ豁｣縺吶ｋ縺ｨ蠖ｱ髻ｿ縺悟､ｧ縺阪◎縺�〒蝗ｰ縺｣縺ｦ縺�ｋ\footnote{^^A
%     \&lt;縲檎悄縺ｫ縲咲ｪ∝�繧堤ｦ∵ｭ｢縺吶ｋ繧ｪ繝励す繝ｧ繝ｳ\eghostguarded{\texttt{|\string&lt;-}}縺ｨ\eghostguarded{\texttt{-&gt;|}}繧定ｿｽ蜉�縺吶ｌ縺ｰ繧医＞繧薙§繧�↑縺九ｍ縺�°縲�
%   }
% \end{itemize}
% 縺ｨ縺�▲縺溘→縺薙ｍ縺ｧ縺ゅｋ縲�
%
% \pkg{outoruby}縺ｨ縺励※縺ｯ縲√％縺ｮ謖吝虚縺ｯ\pxrbpkg 縺ｮ蝠城｡後〒縺ゅｊ縲―pxrbpkg 蛛ｴ縺ｧ蟇ｾ蠢懊＆繧後ｋ縺ｹ縺阪ｂ縺ｮ縺ｧ縺ゅｋ縺ｨ縺�≧遶句�ｴ縺ｧ縺ゅｋ縲�
% 縺励◆縺後▲縺ｦ\emph{\pkg{outoruby}縺ｧ迚ｹ蛻･縺ｪ蟇ｾ蠢懊ｒ縺励※縺薙ｌ縺ｫ蟇ｾ蜃ｦ縺吶ｋ縺薙→縺ｯ縺励↑縺м縲�
%
% \texlevel
% 荳蠢懶ｼ�\eTeX 縺御ｽｿ縺医ｌ縺ｰ�峨�繝ｪ繧｢繝ｳ繝悶Ν縺ｧ谺｡縺ｮ繧医≧縺ｫ縺吶ｌ縺ｰ繝ｫ繝薙�譁ｹ縺碁聞縺��ｴ蜷医↓縺ｮ縺ｿ遯∝�遖∵ｭ｢縺梧怏蜉ｹ縺ｨ縺ｪ繧具ｼ�
% \begin{Verbatim}
%   \usepackage{etoolbox}
%   \makeatletter
%   \patchcmd\pxrr@compose@oneside@block@do{%
%     \pxrr@evenspace@int{#1}\pxrr@boxr
%   }{%
%     \pxrr@evenspace@int{\pxrr@locate@inner}\pxrr@boxr
%   }{}{Patch failed}
%   \makeatother
% \end{Verbatim}
% 遯∝�遖∵ｭ｢繧呈僑蠑ｵ閧ｩ莉倥″縺ｮ莉｣繧上ｊ縺ｫ菴ｿ縺｣縺ｦ縺�◆蝣ｴ蜷医↓縺ｯ蝗ｰ繧九￠縺ｩ窶ｦ窶ｦ縲�
%
% \paragraph{騾｣邯壹＠縺歃cs{outoruby}}\label{sec:dblruby}
%
% \cs{outoruby}縺ｯ繝ｫ繝灘燕蠕後〒縺ｮ陦悟�蜑ｲ縺ｮ逋ｺ逕溘ｒ讀懃衍縺励※縺�ｋ縲�
% 縺薙％縺ｧ縲―cs{outoruby}縺碁｣邯壹＠縲√°縺､謾ｹ陦後′縺｡繧�≧縺ｩ縺昴�髢薙〒逋ｺ逕溘＠縺溷�ｴ蜷医�
% 2縺､縺ｮ\cs{outoruby}縺ｮ縺�■縺ｩ縺｡繧峨°迚�婿縺励°縺昴�謾ｹ陦後ｒ讀懃衍縺ｧ縺阪↑縺��
% 縺励◆縺後▲縺ｦ繧ゅ≧迚�婿縺ｮ繝ｫ繝薙�陦御ｸｭ蠖｢縺ｫ縺ｪ繧九�
%
% 蟇ｾ遲悶�荳榊庄閭ｽ縺ｧ縺ｯ縺ｪ縺�□繧阪≧縺悟､ｧ螟峨◎縺�↑縺ｮ縺ｧ繧�ｋ豌励�縺励↑縺��
%
% \paragraph{谿ｵ關ｽ縺ｯ縺倥ａ}
%
% \cs{outoruby}繧呈ｮｵ關ｽ譛蛻昴〒逕ｨ縺�◆蝣ｴ蜷医√Ν繝謎ｸｭ縺ｧ陦悟�蜑ｲ縺檎匱逕溘☆繧九％縺ｨ縺ｯ縺ｪ縺�→莉ｮ螳壹＠縺ｦ\cs{outoruby}迢ｬ閾ｪ縺ｮ蜃ｦ逅�ｒ蜿悶ｊ繧�ａ縲√☆縺ｹ縺ｦ縺ｮ蜃ｦ逅�ｒ\pxrbpkg 縺ｮ\cs{jruby}縺ｫ莉ｻ縺帙ｋ縲�
% 縺昴�縺溘ａ縲√Ν繝謎ｸｭ縺ｧ陦悟�蜑ｲ縺檎匱逕溘＠縺ｪ縺上↑繧九°縲√≠繧九＞縺ｯ蛻�牡縺励◆縺ｨ縺励※繧り�蜍輔〒蠖｢縺悟�繧頑崛繧上ｉ縺ｪ縺��
%
% 繧ゅ＠繧ゅ☆縺斐￥髟ｷ縺�Λ繝吶Ν繧呈戟縺､邂�擅譖ｸ縺阪ｒ蛻ｩ逕ｨ縺励※縺�ｋ縺ｪ縺ｩ縺ｮ逅�罰縺ｧ谿ｵ關ｽ譛蛻昴〒縺ゅ▲縺ｦ繧�\cs{outoruby}縺ｮ蜃ｦ逅�ｒ菴ｿ縺�◆縺��ｴ蜷医―cs{mbox}縺ｪ縺ｩ縺ｧ譏守､ｺ逧�↓谿ｵ關ｽ繧帝幕蟋九＆縺帙※縺九ｉ\cs{outoruby}繧堤畑縺�ｋ蠢�ｦ√′縺ゅｋ縲�
% 縺昴�蝣ｴ蜷医―cs{outoruby}縺ｯ谿ｵ關ｽ縺ｯ縺倥ａ縺ｧ縺ゅｋ縺薙→繧呈､懃衍縺ｧ縺阪↑縺��縺ｧ縲∵ｮｵ關ｽ繧､繝ｳ繝�Φ繝医∈騾ｲ蜈･縺輔○縺溘￥縺ｪ縺��縺ｧ縺ゅｌ縺ｰ縲∵焔蜍輔〒蜑埼ｲ蜈･遖∵ｭ｢\verb+|-+繧呈欠螳壹＠縺ｪ縺代ｌ縺ｰ縺ｪ繧峨↑縺��
%
% \subsubsection{\cs{discretionary}縺ｫ繧医ｋ蛻ｶ邏м
%
% 譛ｬ繝代ャ繧ｱ繝ｼ繧ｸ縺ｯ\cs{discretionary}繧貞茜逕ｨ縺励※縺�ｋ髢｢菫ゆｸ翫√％繧後↓莨ｴ縺�宛邏�ｒ蜿励￠繧九�
% \emph{縺薙ｌ繧峨�蛻ｶ邏��莉墓ｧ倥〒縺ゅｊ縲∽ｻ雁ｾ後�繧｢繝��繝��繝医〒謾ｹ蝟�＆繧後ｋ隕玖ｾｼ縺ｿ縺ｯ縺ｪ縺м縲�
% 縺励◆縺後▲縺ｦ縲√％縺�＞縺｣縺溷宛邏�↑縺励↓陦悟�蜑ｲ蜿ｯ閭ｽ縺ｪ繝ｫ繝薙ｒ螳溽樟縺吶ｋ\jkrubypkg 縺ゅｋ縺��\ltjrubypkg ��\LuaLaTeX 繧堤畑縺�※繧句�ｴ蜷茨ｼ峨ｒ蛻ｩ逕ｨ縺励◆譁ｹ縺後ｈ縺�□繧阪≧縲�
% 蜷梧ｧ倥↓縲√Δ繝弱Ν繝薙↓蟶ｰ逹縺ｧ縺阪ｋ蝣ｴ蜷医�\pxrbpkg 縺ｮ\cs{jruby}繧堤峩謗･蛻ｩ逕ｨ縺励◆譁ｹ縺後ｈ縺�
% \begin{footnote}\label{fn:pxrbghost}^^A
%   縺薙�蝣ｴ蜷医Ν繝薙�遯∝�縺励↑縺��縺壹↑縺ｮ縺ｧ蜥梧枚繧ｴ繝ｼ繧ｹ繝医ｒ菴ｿ縺�％縺ｨ縺後〒縺阪ｋ縲�
%   蜥梧枚繧ｴ繝ｼ繧ｹ繝医′譛牙柑縺ｧ縺ゅｋ蝣ｴ蜷医―cs{jruby}縺悟ｮ滄圀縺ｫ縺ｯ遯∝�縺吶ｋ縺薙→縺後↑縺�→縺励※繧ゅ�ｲ蜈･縺ゅｊ繧定ｨｭ螳壹☆繧九→繧ｨ繝ｩ繝ｼ縺ｫ縺ｪ繧九％縺ｨ縺ｫ豌励ｒ縺､縺代ｉ繧後◆縺��
%   縺輔ｉ縺ｫ縺ｯ谿ｵ關ｽ縺ｯ縺倥ａ縺ｮ\cs{outoruby}縺ｯ閾ｪ蜍慕噪縺ｫ\cs{jruby}縺ｫ蛻�ｊ譖ｿ繧上ｋ縲�
%   \cs{outoruby}縺ｮ&lt;option_1&gt;縺ｮ譌｢螳壼､繧貞挨縺ｫ險ｭ螳壹〒縺阪ｋ繧医≧縺ｫ縺吶∋縺阪↑豌励ｂ縺吶ｋ縺後√→繧翫≠縺医★莉･荳九�繧医≧縺ｫ縺吶ｌ縺ｰ繧医＞縺�繧阪≧��
%   \begin{Verbatim}[vspace=0.25\baselineskip,gobble=6,xleftmargin=\leftskip,fontsize=\footnotesize]
%     \newcommand\ruby[3][]{{%
%       \rubysetup{|-|}\rubyusejghost
%       \jruby[#1]{#2}{#3}%
%     }}
%   \end{Verbatim}
%   縺薙�蜻ｽ莉､縺ｯ閼�ｼｱ縺ｫ縺ｪ繧九�縺ｧ豕ｨ諢上�
% \end{footnote}^^A
% 縲�
%
% \paragraph{谿ｵ關ｽ縺翫ｏ繧笠
%
% \cs{outoruby}縺ｯ\pxrbpkg 縺ｮ\cs{jruby}縺ｨ逡ｰ縺ｪ繧翫∵ｮｵ關ｽ譛ｫ蟆ｾ縺ｧ縺ｮ菴ｿ逕ｨ縺ｫ蟇ｾ縺礼音蛻･縺ｪ蟇ｾ蜃ｦ縺ｯ縺励※縺�↑縺��
% 縺励◆縺後▲縺ｦ縲∵ｮｵ關ｽ譛ｫ蟆ｾ縺ｧ縺ｯ謇句虚縺ｧ蠕碁ｲ蜈･遖∵ｭ｢\verb+-|+繧呈欠螳壹＠縺ｪ縺代ｌ縺ｰ隕ｪ譁�ｭ励′迚磯擇遶ｯ縺ｾ縺ｧ菴ｿ縺��縺｣縺溷�ｴ蜷医↓繝ｫ繝薙′迚磯擇縺九ｉ縺ｯ縺ｿ蜃ｺ繧区＄繧後′縺ゅｋ縲�
%
% 縺ｪ縺翫�壼ｸｸ縺ｯ繝ｫ繝薙�蠕後↓蜿･轤ｹ縺檎ｶ壹￥縺ｨ閠�∴繧峨ｌ繧九′縲∫ｮ�擅譖ｸ縺阪ｄ繝�ぅ繧ｹ繝励Ξ繧､縺ｪ縺ｩ縺ｧ譁�忰縺ｫ蜿･轤ｹ縺後↑縺��ｴ蜷医↓縺翫＞縺ｦ縺ｯ蜊∝�逋ｺ逕溘＠蠕励ｋ縺ｨ諠ｳ螳壹＠縺ｦ縺�ｋ縲�
%
% \paragraph{繝ｫ繝薙�髟ｷ縺扶
%
% \cs{outoruby}縺翫ｈ縺ｳ\cs{outorb@discretionary}縺ｯ繝ｫ繝薙�蜑榊ｾ後ｂ蜷ｫ繧∬､�焚邂�園縺ｧ陦悟�蜑ｲ縺吶ｋ縺薙→繧呈Φ螳壹＠縺ｦ縺�↑縺��
% 縺励◆縺後▲縺ｦ繝ｫ繝灘�菴薙�髟ｷ縺輔�2邂�園莉･荳翫〒縺ｮ陦悟�蜑ｲ縺御ｸ崎ｦ√↑縺ｻ縺ｩ蜊∝�遏ｭ縺上↑縺代ｌ縺ｰ縺ｪ繧峨↑縺��
%
% 繧ゅ＠繧�1縺､縺ｮ繝ｫ繝薙′隍�焚邂�園縺ｧ蛻�牡縺励◆蝣ｴ蜷医↓縺ｯ縲∵ｭ｣縺励＞蜃ｺ蜉帙↓縺ｪ繧峨↑縺��縺ｧ繧ｨ繝ｩ繝ｼ縺悟�繧九�
% 蜉�縺医※谺｡蝗槭ち繧､繝励そ繝�ヨ譎ゅ↓\verb+\begin{document}+縺ｮ繧ｿ繧､繝溘Φ繧ｰ縺ｧ隴ｦ蜻翫′蜃ｺ繧九�
%
% \iffalse
%   \vbox{\hsize\z@\leavevmode
%     \outoruby{{$\sin$}{$\cos$}{$\cos$}{$\sin$}}{螂ｽ縺鋼雖後＞|雖後＞|螂ｽ縺閤}
% \fi
%
% \paragraph{繧ｴ繝ｼ繧ｹ繝�}
%
% \cs{outoruby}縺ｯ蜑榊ｾ後〒縺ｮ陦悟�蜑ｲ繧呈､懃衍縺吶ｋ縺溘ａ縺ｫ繧ｴ繝ｼ繧ｹ繝亥�逅�→蜈ｱ蟄倥〒縺阪↑縺��
% 閼壽ｳｨ\ref{fn:pxrbghost}縺ｧ霑ｰ縺ｹ縺溘→縺翫ｊ縲―pxrbpkg 縺ｫ縺翫＞縺ｦ繧ｴ繝ｼ繧ｹ繝亥�逅�ｒ逕ｨ縺�ｋ縺ｮ縺梧怏逕ｨ縺ｪ蝣ｴ蜷医′縺ゅｋ縺ｮ縺ｧ\cs{outoruby}螳溯｡梧凾縺ｫ蜥梧枚繧ｴ繝ｼ繧ｹ繝医′譛牙柑縺ｧ縺ゅ▲縺ｦ繧ゅお繝ｩ繝ｼ縺ｯ蜃ｺ縺ｪ縺��
% 縺励°縺励↑縺後ｉ縲√◎縺ｮ蝣ｴ蜷医〒繧�\cs{outoruby}縺ｯ繧ｴ繝ｼ繧ｹ繝亥�逅�＆繧後★縲∵�遉ｺ逧�↑陬懷勧險ｭ螳壹′蠢�ｦ√→縺ｪ繧句�ｴ蜷医′縺ゅｋ縺薙→縺ｫ豕ｨ諢上＆繧後◆縺��
%
% \paragraph{繝上う繝輔ロ繝ｼ繧ｷ繝ｧ繝ｳ繝壹リ繝ｫ繝�ぅ}\label{sec:hyphpen}
%
% \texlevel
% \cs{outoruby}縺ｯ\cs{discretionary}縺ｫ繧医ｊ螳溯｣�＆繧後※縺翫ｊ縲―cs{discretionary}縺ｯ繝上う繝輔ロ繝ｼ繧ｷ繝ｧ繝ｳ髢｢騾｣縺ｮ繝代Λ繝｡繧ｿ縺ｮ險ｭ螳壹�蠖ｱ髻ｿ繧貞女縺代ｋ縲�
% 縺溘→縺医�
% \begin{Verbatim}
%   \hyphenpenalty=10000\relax
% \end{Verbatim}
% 縺ｫ繧医ｊ繝上う繝輔ロ繝ｼ繧ｷ繝ｧ繝ｳ繧堤ｦ∵ｭ｢縺励◆蝣ｴ蜷医―cs{outoruby}荳ｭ縺翫ｈ縺ｳ縺昴�蜑榊ｾ後〒縺ｮ陦悟�蜑ｲ繧らｦ∵ｭ｢縺輔ｌ繧九�
% 蜷梧ｧ倥↓\cs{outoruby}縺ｫ繧医ｋ陦悟�蜑ｲ縺檎匱逕溘＠繧�☆縺上☆繧九◆繧√↓
% \begin{Verbatim}
%   \hyphenpenalty=0\relax
%   % 縺ｾ縺溘�
%   \outorubyhyphenbreakable
% \end{Verbatim}
% 縺ｮ繧医≧縺ｫ縺励◆蝣ｴ蜷医√ワ繧､繝輔ロ繝ｼ繧ｷ繝ｧ繝ｳ繧ゅ◎繧後□縺醍匱逕溘＠繧�☆縺上↑繧九�
%
% 縺ｪ縺翫―cs{outoruby}縺翫ｈ縺ｳ\cs{outorb@discretionary}縺ｯ縺溘→縺�&lt;pre-break_n&gt;繧堤ｩｺ縺ｫ縺励◆縺ｨ縺励※繧ゅ∝ｸｸ縺ｫ\cs{exhyphenpenalty}縺ｧ縺ｯ縺ｪ縺十cs{hyphenpenalty}縺ｮ蠖ｱ髻ｿ繧貞女縺代ｋ縲�
%
% \texlevel
% 繧ゅ＠繧ゅワ繧､繝輔ロ繝ｼ繧ｷ繝ｧ繝ｳ繧貞ｮ悟�縺ｫ遖∵ｭ｢縺励◆縺��縺ｧ縺ゅｌ縺ｰ縲―cs{discretionary}縺ｮ蜃ｦ逅�↓蠖ｱ髻ｿ繧貞所縺ｼ縺輔↑縺�挨縺ｮ譁ｹ豕包ｼ�\cs{hyphenchar}繧Ыcs{language}�峨ｒ逕ｨ縺�ｌ縺ｰ\cs{outoruby}縺ｨ蜈ｱ蟄倥〒縺阪ｋ縲�
%
% \paragraph{蜑榊ｾ後�遨ｺ逋ｽ}\label{sec:prepost}
%
% 繝ｫ繝薙�蜑榊ｾ後〒縺ｮ陦悟�蜑ｲ繧呈､懃衍縺吶ｋ縺溘ａ縲√％縺ｮ陦悟�蜑ｲ縺ｯ\cs{outoruby}縺ｮ蜀�Κ縺ｧ逋ｺ逕溘☆繧句ｿ�ｦ√′縺ゅｋ縲�
% 縺昴�縺溘ａ縲―cs{outoruby}縺ｮ螟夜Κ縺ｮ蜑榊ｾ後〒縺ｯ陦悟�蜑ｲ縺檎ｦ∵ｭ｢縺輔ｌ繧九�
% \begin{itemize}
%   \item \cs{outoruby}縺ｮ蜑榊�縺ｫ縺ゅｋ遨ｺ逋ｽ繧��繝翫Ν繝�ぅ縺ｯ蜑企勁縺輔ｌ縺溷ｾ後―cs{outoruby}縺ｮ蜀�Κ縺ｧ閠��縺輔ｌ繧九�
%   \item \cs{outoruby}縺ｮ蠕後ｍ蛛ｴ縺ｫ縺ゅｋ遨ｺ逋ｽ縺ｯ辟｡隕悶＆繧後∵ｶ域ｻ�☆繧九�
% \end{itemize}
% 縺ｪ繧九∋縺十cs{outoruby}蛛ｴ縺ｧ蟇ｾ蜃ｦ縺吶ｋ繧医≧縺ｫ縺励※縺�ｋ縺悟ｮ檎挑縺ｧ縺ｯ縺ｪ縺��縺ｧ縲√Θ繝ｼ繧ｶ縺圭cs{outoruby}縺ｮ蜑榊ｾ後〒\cs{allowbreak}繧Ыcs{hspace}遲峨ｒ菴ｿ縺�％縺ｨ縺ｯ謗ｨ螂ｨ縺輔ｌ縺ｪ縺��
%
% 繧ゅ＠繧ゅ％繧後↓蜿阪＠縺溷�ｴ蜷�
% \begin{itemize}
%   \item 陦碁�ｭ蠖｢�剰｡梧忰蠖｢縺ｫ豁｣縺励￥蛻�ｊ譖ｿ繧上ｉ縺ｪ縺�
%   \item 陦悟�蜑ｲ縺励◆蝣ｴ蜷医↓縲∬｡悟�蜑ｲ蜑搾ｼ丞ｾ後↓菴呵ｨ医↑遨ｺ逋ｽ縺梧ｮ九ｋ
% \end{itemize}
% 縺ｪ縺ｩ縺檎匱逕溘☆繧句庄閭ｽ諤ｧ縺後≠繧九�
%
% \begin{Verbatim}
%   譛蠕後�逧�ｸ昴〒縺ゅｉ縺帙ｉ繧後∪縺兔outoruby{諢帶眠隕夂ｾ�}{縺ゅ＞|縺励ｓ|縺弓縺上ｉ}\hspace{1\zw}貅･蜆讒�
% \end{Verbatim}
%
% {\catcode`\&lt;=12 \marginfig{\raggedleft
%   \fboxsep2\p@
%   \hspace*{-1\zw}^^A
%   \mbox{\fbox{\parbox&lt;t&gt;{9\zw}{^^A
%     \baselineskip1.5\zw
%     譛蠕後�逧�ｸ昴〒縺ゅｉ縺帙ｉ繧後∪縺呎�譁ｰ隕夂ｾ�\hspace{1\zw}貅･蜆讒�
%   }}\hskip-\fboxrule
%   \fbox{\parbox&lt;t&gt;{9\zw}{^^A
%     \baselineskip1.5\zw
%     譛蠕後�逧�ｸ昴〒縺ゅｉ縺帙ｉ繧後∪縺兔outoruby{諢帶眠隕夂ｾ�}{縺ゅ＞|縺励ｓ|縺弓縺上ｉ}\hspace{1\zw}貅･蜆讒�
%   }}}^^A
% }}\marginpar{\vskip7pt}
%
% 繧ゅ＠繧り｡悟�蜑ｲ縺ｫ繧医▲縺ｦ豸域ｻ�☆繧狗ｩｺ逋ｽ縺悟燕蠕後↓蠢�ｦ√〒縺ゅｋ蝣ｴ蜷医�\cs{outoruby}縺ｮ&lt;pre-space&gt;縲�&lt;post-space&gt;縺ｧ\cs{hspace}繧堤畑縺�ｌ縺ｰ繧医＞\footnote{^^A
%   縺昴�遨ｺ逋ｽ縺悟柱谺ｧ譁�俣遨ｺ逋ｽ縺ｧ縺ゅｋ蝣ｴ蜷医�\pxrbpkg 縺ｮ陬懷勧險ｭ螳喀eghostguarded{\texttt:}縺御ｽｿ縺医ｋ縲�
% }��
% \begin{Verbatim}
%   譛蠕後�逧�ｸ昴〒縺ゅｉ縺帙ｉ繧後∪縺兔outoruby[][][][\hspace{1\zw}]{諢帶眠隕夂ｾ�}{縺ゅ＞|縺励ｓ|縺弓縺上ｉ}貅･蜆讒�
% \end{Verbatim}
%
% {\catcode`\&lt;=12 \marginfig{\raggedleft
%   \fboxsep2\p@
%   \fbox{\parbox&lt;t&gt;{9\zw}{^^A
%     \baselineskip1.5\zw
%     譛蠕後�逧�ｸ昴〒縺ゅｉ縺帙ｉ繧後∪縺兔outoruby[][][][\hspace{1\zw}]{諢帶眠隕夂ｾ�}{縺ゅ＞|縺励ｓ|縺弓縺上ｉ}貅･蜆讒�
% }}}}
%
% 縺ｪ縺翫√％縺ｮ萓九〒縲圭outoruby{貅･蜆}{縺ｵ|縺枝縲阪↓縺ｾ縺ｧ繝ｫ繝薙ｒ縺ｵ繧九→縲―cs{hspace}繧�&lt;post-space&gt;縺ｫ遘ｻ蜍輔＠縺溘％縺ｨ縺ｧ騾｣邯壹＠縺溘Ν繝薙↓縺ｪ縺｣縺ｦ縺ｾ縺壹＞��\ref{sec:dblruby}遽蜿ら��峨�
%
% \paragraph{譟碑ｻ溘＆}
%
% \cs{outoruby}縺ｮ荳ｭ縺ｧ縺ｯ繧ｰ繝ｫ繝ｼ縺御ｼｸ邵ｮ縺励↑縺��
% 繧医▲縺ｦ\pxrbpkg 縺ｮ險ｭ螳壹↓繧医ｋ蜥梧ｬｧ譁�俣遨ｺ逋ｽ繧�&lt;pre-space&gt;縲�&lt;post-space&gt;縺ｫ蜈･繧後ｉ繧後◆遨ｺ逋ｽ縺ｯ莨ｸ縺ｳ邵ｮ縺ｿ縺励↑縺上↑繧九�
% 蜉�縺医※縲√Ν繝薙�髢薙♀繧医�蜑榊ｾ後〒縺ｮ陦悟�蜑ｲ縺ｮ襍ｷ縺阪ｄ縺吶＆縺ｯ蜷後§谿ｵ關ｽ縺ｮ縺吶∋縺ｦ縺ｮ\cs{outoruby}�医♀繧医�繝上う繝輔ロ繝ｼ繧ｷ繝ｧ繝ｳ�峨〒荳蠕九〒縺ゅｊ縲�
% 蛟句挨縺ｫ謖�ｮ壹☆繧九％縺ｨ縺ｯ縺ｧ縺阪↑縺��
%
% \paragraph[This can't happen (disc&lt;n&gt;).]{\textexlevel This can't happen (disc&lt;n&gt;).}
%
% 蟇ｾ遲悶＠縺溘°繧牙､壼�螟ｧ荳亥､ｫ窶ｦ窶ｦ縲ゑｼ�\href{https://okumuralab.org/tex/mod/forum/discuss.php?d=416}{髢｢騾｣}��
%
% \needspace{6\baselineskip}
% \section{萓急
%
% \begingroup \catcode`\&lt;=12
% \begin{VerbatimOut}[commandchars=/()]{\jobname.tmp}
%   \rubysetup{&lt;j&gt;}\outorubysetup{||-||}
%   \outoruby{逾�恍邊ｾ闊枝{縺旨縺翫ｓ|縺励ｇ縺�|縺倥ｃ}縺ｮ\jruby{髏�}{縺九�}縺ｮ\jruby{螢ｰ}{縺薙∴}縲�
%   \outoruby{隲ｸ陦檎┌蟶ｸ}{縺励ｇ|縺弱ｇ縺�|繧|縺倥ｇ縺�}縺ｮ\outoruby[-|]{髻ｿ}{縺ｲ縺ｳ縺閤
%   \jruby{譛厭{縺�}繧翫�\jruby{豐咏ｾ�曙讓ｹ}{縺励ｃ|繧榎縺昴≧|縺倥ｅ}縺ｮ\jruby{闃ｱ}{縺ｯ縺ｪ}縺ｮ
%   \jruby{濶ｲ}{縺�ｍ}縲―outoruby{逶幄�ｿ�｡ｰ}{縺倥ｇ縺�|縺励ｃ|縺ｲ縺｣|縺吶＞}縺ｮ
%   \outoruby{逅�}{縺薙→繧上ｊ}繧箪outoruby[|-]{鬘扶{縺ゅｉ繧殉縺吶�\jruby{螂｢}{縺翫＃}繧後ｋ
%   \jruby{閠�}{繧ゅ�}繧�\jruby{荵�}{縺ｲ縺扶縺励°繧峨★縲―jruby{蜚ｯ}{縺溘□}\jruby{譏･}{縺ｯ繧急縺ｮ
%   \jruby{螟怡{繧�}縺ｮ\jruby{螟｢}{繧�ａ}縺ｮ\jruby{螯�}{縺斐→}縺励�\jruby{迪孺{縺溘￠}縺�
%   \jruby{閠�}{繧ゅ�}繧�\jruby{驕�}{縺､縺м縺ｫ縺ｯ\jruby{貊�}{縺ｻ繧閤縺ｳ縺ｬ縲�
%   \outoruby{蛛殉{縺ｲ縺ｨ縺�}縺ｫ\jruby{鬚ｨ}{縺九●}縺ｮ\jruby{蜑閤{縺ｾ縺�}縺ｮ\jruby{蝪ｵ}{縺｡繧笠縺ｫ
%   \jruby{蜷迎{縺翫↑}縺倥�\jruby{驕�}{縺ｨ縺笠縺十outoruby{逡ｰ譛掵{縺л縺｡繧�≧}繧�
%   \outoruby{險ｪ}{縺ｨ縺ｶ繧厭縺医�縲―jruby{遘ｦ}{縺励ｓ}縺ｮ\outoruby{雜咎ｫ�}{縺｡繧�≧|縺薙≧}縲�
%   \jruby{貍｢}{縺九ｓ}縺ｮ\jruby{邇玖漆}{縺翫≧|繧ゅ≧}縲―outoruby[-|]{譴±{繧翫ｇ縺�}縺ｮ
%   \outoruby{蜻ｨ莨笠{縺励ｅ縺�|縺м縲―jruby{蜚図{縺ｨ縺�}縺ｮ\jruby{遖�ｱｱ}{繧阪￥|縺輔ｓ}縲�
%   \jruby{譏ｯ遲厭{縺薙ｌ|繧厭縺ｯ\jruby{逧�}{縺ｿ縺ｪ}
%   \outoruby[|-|]{譌ｧ荳ｻ蜈育視}{縺阪ｅ縺�|縺励ｅ|縺帙ｓ|縺薙≧}縺ｮ\outoruby{謾ｿ}{縺ｾ縺､繧翫＃縺ｨ}縺ｫ繧�
%   \outoruby{蠕党{縺励◆縺迎繧上★縲―jruby{讌ｽ}{縺溘�}縺励∩繧箪jruby{讌ｵ}{縺阪ｏ}繧√�
%   \outoruby{隲ｫ}{縺�＆繧±繧偵ｂ\jruby{諤掵{縺翫ｂ}縺Ыjruby{蜈･}{縺м繧後★縲�
%   \jruby{螟ｩ荳急{縺ｦ繧倒縺急縺ｮ\jruby{荵ｱ}{縺ｿ縺�}繧後ｓ\jruby{莠急{縺薙→}繧偵ｂ\jruby{謔毳{縺輔→}
%   繧峨★縺励※縲―jruby{豌鷹俣}{縺ｿ繧倒縺九ｓ}縺ｮ\jruby{諢±{縺�ｌ}縺�ｋ\outoruby{謇}{縺ｨ縺薙ｍ}繧�
%   \jruby{遏･}{縺抑繧峨＊繧翫＠縺九�縲―jruby{荵�}{縺ｲ縺扶縺励°繧峨★縺励※\jruby{莠｡}{縺ｼ縺�}縺倥＠
%   \jruby{閠�}{繧ゅ�}縺ｩ繧�\jruby{荵毳{縺ｪ繧笠縲�
% \end{VerbatimOut}
% \newbox\@@box
% \setbox\@@box=\vbox{^^A
%   \kanjiskip=\z@ plus 0.1\zw
%   \hsize11\zw
%   \vskip\topsep
%   \pxpatchon
%   {\catcode`\%=14 \input{\jobname.tmp}}^^A
%   \par
%   \hfill{\footnotesize �亥ｹｳ螳ｶ迚ｩ隱槭ｈ繧奇ｼ厭}
% \setbox\z@=\vbox{^^A
%   \hsize32\zw
%   \advance\hsize\marginparwidth
%   \advance\hsize-3\zw
%   \VerbatimInput[gobble=\z@,vspace=\z@]{\jobname.tmp}}
% \loop
%   \@tempdima\pagegoal
%   \advance\@tempdima-\pagetotal
%   \ifdim\@tempdima&lt;\baselineskip
%     \newpage
%   \else\ifdim\pagegoal=\maxdimen
%     {\baselineskip1sp\null}^^A
%     \nobreak
%   \else
%     \vskip-0.75\zw
%     \setbox\tw@=\vsplit\z@ to\@tempdima
%     \setbox4=\vsplit\@@box to\@tempdima
%     \setbox\tw@=\vtop{\unvbox\tw@}^^A
%     \setbox4=\vtop{\unvbox4}^^A
%     \hb@xt@\textwidth{^^A
%       \hskip-\marginparwidth\hskip4\zw\textcolor[gray]{0.75}{\vrule}\box4\textcolor[gray]{0.75}{\vrule}\kern-0.4\p@\hss\box\tw@}^^A
%   \fi\fi
% \ifdim\dp\@@box&gt;\z@
% \repeat
% \unvbox\z@
% \endgroup
%
% \StopEventually
%
% \section[螳溯｣�]{\texlevel 螳溯｣�}
%
% \catcode`\#=\active
% \let#\argn
%
% \subsection{蛻晄悄蛹凡
% \subsubsection{螳｣險}
%
% \newcommand\@@sourcepart[1]{}
% \newcommand\@@sourcepartend{\endinput}
% \input{outoruby.dtx}
%    \begin{macrocode}
%&lt;*pkg&gt;
%    \end{macrocode}
%
% 繧ｪ繝励す繝ｧ繝ｳ縺ｯ縺ｪ縺��
%
% \begin{macro}{\outorb@pkgname}
% \begin{macro}{\outorb@err}
% \begin{macro}{\outorb@warn}
% \begin{macro}{\outorb@warn@noln}
%   繧ｨ繝ｩ繝ｼ繧�ｭｦ蜻翫↑縺ｩ縲�
%    \begin{macrocode}
\def\outorb@pkgname{outoruby}
\def\outorb@err#1{%
  \@PackageError\outorb@pkgname{#1}\@ehc
}
\def\outorb@warn{%
  \@PackageWarning\outorb@pkgname
}
\def\outorb@warn@noln{%
  \@PackageWarningNoLine\outorb@pkgname
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{萓晏ｭ�}
%
% 繝ｫ繝薙�蜃ｦ逅��\pkg{pxrubrica}縺ｫ荳ｸ謚輔￡縺吶ｋ縲�
%
%    \begin{macrocode}
\RequirePackage{pxrubrica}[2011/07/23]
%    \end{macrocode}
%
% \pxrbpkg 縺ｮ莉･荳九�蜀�Κ蜻ｽ莉､繧貞茜逕ｨ縺吶ｋ��
% \begin{tasks}[
%   style=itemize,
%   item-indent=1\zw,
%   label-width=1\zw,
%   column-sep=\z@,
%   label-offset=0\zw,
% ](4)
%   \task \cs{ifpxrr@safe@mode}
%   \task \cs\rubynousejghost
%   \task \cs{pxrr@po@TR@}\globstar
%   \task \cs{pxrr@po@C@}\globstar
% \end{tasks}
% \begin{tasks}[
%   style=itemize,
%   item-indent=1\zw,
%   label-width=1\zw,
%   column-sep=\z@,
%   label-offset=0\zw,
% ](4)
%   \task \cs\pxrr@cnta
%   \task \cs\pxrr@decompbar
%   \task \cs\pxrr@decompose
%   \task \cs\pxrr@if@last
%   \task \cs\pxrr@unite@group
%   \task \cs\pxrr@zip@list
%   \task \cs\pxrr@ifprimitive
%   \task \cs\pxrr@inhibitglue
%   \task \cs{ifpxrr@abody}
%   \task \cs\pxrr@check@kinsoku
% \end{tasks}
%
% \begin{macro}{\ifpxrr@safe@mode}
% \begin{macro}{\pxrr@unite@group}
% \begin{macro}{\pxrr@ifprimitive}
% \begin{macro}{\pxrr@inhibitglue}
% \pxrbpkg 縺ｮ繝舌�繧ｸ繝ｧ繝ｳ縺ｫ繧医▲縺ｦ縺ｯ螳夂ｾｩ縺輔ｌ縺ｦ縺ｪ縺�庄閭ｽ諤ｧ縺後≠繧句多莉､縺ｮ莉｣譖ｿ螳夂ｾｩ縲�
%    \begin{macrocode}
\expandafter\ifx\csname ifpxrr@safe@mode\endcsname\relax
  \expandafter\let\csname ifpxrr@safe@mode\expandafter\endcsname\csname iffalse\endcsname
\fi
\expandafter\ifx\csname pxrr@unite@group\endcsname\relax
  \def\pxrr@unite@group#1{%
    \def\pxrr@inter##1{%
      \ltx@LocalAppendToMacro#1{##1}%
    }%
    \def\pxrr@pre{%
      \let#1\ltx@empty
      \pxrr@inter
    }%
    \def\pxrr@post{%
      \expandafter\def\expandafter#1\expandafter{%
        \expandafter\pxrr@pre\expandafter{#1}\pxrr@post
      }%
    }%
    #1%
  }
\fi
\expandafter\ifx\csname pxrr@ifprimitive\endcsname\relax
  \def\pxrr@ifprimitive#1#2#3{#3}
\fi
\expandafter\ifx\csname pxrr@inhibitglue\endcsname\relax
  \let\pxrr@inhibitglue\relax
\fi
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \pkg{ltxcmds}縺翫ｈ縺ｳ\pkg{infwarerr}�医↑縺懶ｼ滂ｼ峨ｒ蛻ｩ逕ｨ縺吶ｋ縲�
%
%    \begin{macrocode}
\RequirePackage{ltxcmds}[2011/08/22]% \ltx@LocalPrependToMacro
\RequirePackage{infwarerr}
%    \end{macrocode}
%
% \subsubsection{繝輔か繝ｼ繝槭ャ繝井ｾ晏ｭ伜多莉､}
%
% \begin{macro}{\outorb@disc@count}
% \cs{outorb@discretionary}縺ｧ\cs{outorb@discretionary}縺斐→縺ｮ繝ｦ繝九�繧ｯ縺ｪ隴伜挨蟄舌↓逕ｨ縺�ｋ縲�
% \begin{macro}{\outorb@disc@box}
% \cs{outorb@discretionary}縺ｧ\meta{no-break}繧剃ｿ晄戟縺吶ｋ繝ｦ繝九�繧ｯ縺ｪbox繝ｬ繧ｸ繧ｹ繧ｿ縲�
%    \begin{macrocode}
\newcount\outorb@disc@count
\newbox\outorb@disc@box
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\outorb@thepage}
% \begin{macro}{\outorb@aux@write}
% \begin{macro}{\outorb@aux@write@immediate}
% \begin{macro}{\outorb@AtBeginDocument}
% \begin{macro}{\outorb@AtEndDocument}
% \begin{macro}{\outorb@labelchanged}
% \begin{macro}{\outorb@aux@write@providecommand}
% \begin{macro}{\outorb@errifdefined}
% \begin{macro}{\outorb@MM}
% \begin{macro}{\outorb@iM}
% \par \pxrbpkg 縲―pkg{ltxcmds}縲―pkg{infwarerr}縲―pkg{outoruby}莉･螟悶〒螳夂ｾｩ縺輔ｌ縺ｦ縺�ｋ蜻ｽ莉､縺ｯ縺薙％縺ｧ繝ｩ繝��縺吶ｋ縲�
%    \begin{macrocode}
\def\outorb@thepage{\thepage}
\def\outorb@aux@write#1{%
  \protected@write\@auxout{}{#1}%
}
\def\outorb@aux@write@immediate{%
  \immediate\write\@auxout
}
\def\outorb@AtBeginDocument{%
  \AtBeginDocument
}
\def\outorb@AtEndDocument{%
  \AtEndDocument
}
\def\outorb@labelchanged{%
  \@tempswatrue
}
\def\outorb@aux@write@providecommand#1{%
  \string\providecommand\string#1%
}
\def\outorb@errifdefined#1{%
  \newcommand#1{}%
}
\mathchardef\outorb@MM=20000
\mathchardef\outorb@iM=9999
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\outorb@getpen}
% \movempar
% \inarg1 &lt;n&gt;
% \begin{flushleft}
%   \begin{tabular}{ll}
%     \multicolumn{2}{c}{\cs{@getpen}} \\
%     \toprule
%     &lt;n&gt; &amp; value \\ \midrule
%     0 &amp; \cs\z@ \\
%     1 &amp; \cs\@lowpenalty \\
%     2 &amp; \cs\@medpenalty \\
%     3 &amp; \cs\@highpenalty \\
%     else &amp; \cs\@M \\ \bottomrule
%   \end{tabular}
% \end{flushleft}
%    \begin{macrocode}
\def\outorb@getpen#1{%
  \ifnum#1&gt;3
    \outorb@iM
  \else
    \@getpen{#1}%
  \fi
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@protected}
% \par \cs{protected}縺後≠繧句�ｴ蜷�\verb+\protected\def+縲√↑縺代ｌ縺ｰ螳夂ｾｩ蠕後↓\cs{MakeRobust}逶ｸ蠖薙�蜃ｦ逅��
% \inarg1 \cs{def}
% \inarg2 \CS
%    \begin{macrocode}
\pxrr@ifprimitive\protected{% e-TeX
  \def\outorb@protected#1#2{%
    \protected#1#2%
  }%
}{% non e-TeX
  \def\outorb@protected#1#2{%
    \def\outorb@protected@tempa{#2}%
    \afterassignment\outorb@protected@makerobust
    #1#2%
  }%
%    \end{macrocode}
% \begin{macro}{\outorb@protected@makerobust}
% \par \cs{MakeRobust}逶ｸ蠖薙�蜃ｦ逅��
% \LaTeX 縺ｧ縺励°豁｣蟶ｸ縺ｫ蜍輔°縺ｪ縺��縺ｧ豕ｨ諢上�
% Contorol symbol縺ｮ縺薙→縺ｯ閠��縺励※縺�↑縺��
%    \begin{macrocode}
  \def\outorb@protected@makerobust{%
    \begingroup
      \escapechar=\ltx@minusone
      \edef\outorb@tempa{%
        \def\noexpand\outorb@tempa{%
          \expandafter\string\outorb@protected@tempa
        }%
      }%
    \expandafter\endgroup\outorb@tempa
    \expandafter\let\csname
      \outorb@tempa\ltx@space\expandafter\endcsname
      \csname \outorb@tempa\endcsname
    \expandafter\edef\csname \outorb@tempa\expandafter\endcsname{%
      \noexpand\protect
      \expandafter\noexpand\csname \outorb@tempa\ltx@space\endcsname
    }%
  }%
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \subsection{謫ｬ莨ｼ螟夐㍾\cs{discretionary}}
%
% \begin{macro}{\outorb@discretionary}
% \@cs{outorb@discretionary}\c@@arg{\ttend1{&lt;pre-break_1&gt;}{&lt;post-break_1&gt;}{&lt;pre-break_2&gt;}{&lt;post-break_2&gt;}\ldots}{&lt;no-break&gt;}
%
% \begin{Verbatim}
%   \discretionary{}{螂ｽ縺構kern-2\zw}{}%
%   \discretionary{雖迎{縺Ыkern-2\zw}{}%
%   \discretionary{螂ｽ縺閤{}{譎ｮ騾嘲%
% \end{Verbatim}
% 縺ｨ縺�≧discretionary縺ｮ荳ｦ縺ｳ縺後≠縺｣縺溘→縺阪√ｂ縺励ｂ縲梧勸騾壹阪′蜈･繧倶ｽ呵｣輔′陦悟�縺ｫ縺ゅｋ縺ｮ縺ｧ縺ゅｌ縺ｰ縺吶∋縺ｦ縺ｮdiscretionary縺ｧ&lt;no-break&gt;縺碁∈謚槭＆繧後ｋ縲�
%
% 繧ゅ＠繧ゅ梧勸騾壹阪′蜈･繧雁�繧峨↑縺��縺ｧ縺ゅｌ縺ｰ縲√←縺薙°縺ｮdiscretionary縺ｧ蛻�牡縺檎匱逕溘☆繧九ゅ％縺ｮ縺ｨ縺肴怙蠕後�discretionary縺ｧ縺ｯ&lt;no-break&gt;縺碁∈謚槭＆繧後◆縺ｨ縺励※繧ゅ√◎縺ｮ蜑阪�discretionary縺ｧ&lt;post-break&gt;縺ｫ莉戊ｾｼ繧薙□雋�縺ｮkern縺ｫ繧医▲縺ｦ縺昴�蟷��謇薙■豸医＆繧後ｋ縲�
% 縺励◆縺後▲縺ｦ&lt;post-break&gt;縺瑚｡碁聞繧医ｊ蜊∝�縺ｫ遏ｭ縺代ｌ縺ｰ謾ｹ陦後�1邂�園縺ｧ縺励°逋ｺ逕溘＠縺ｪ縺��
%
%
%    \begin{macrocode}
\outorb@protected\def\outorb@discretionary#1#2{%
  \begingroup
%    \end{macrocode}
% \par &lt;no-break&gt;縺ｮ蟷�′蠢�ｦ√↑縺ｮ縺ｧ蜿門ｾ励�
% #1荳ｭ縺ｧ繧ｹ繧ｯ繝ｩ繝�メ繝ｬ繧ｸ繧ｹ繧ｿ繧剃ｽｿ縺｣縺ｦ繧九°繧ゅ＠繧後↑縺��縺ｧ繝ｦ繝九�繧ｯ縺ｪ繝ｬ繧ｸ繧ｹ繧ｿ縲�
%    \begin{macrocode}
  \setbox\outorb@disc@box=\hbox{#2}%
  \ltx@ifblank{#1}{%
%    \end{macrocode}
% \inarg1 \&lt;�育ｩｺ��
% \par \cs\discretionary 縺ｫ縺励↑縺��
%    \begin{macrocode}
    \unhbox\outorb@disc@box
    \endgroup
  }{%
%    \end{macrocode}
% \inarg1{&lt;pre-break_1&gt;}{&lt;post-break_1&gt;}\ldots\c@@arg{&lt;pre-break_n&gt;}{&lt;post-break_n&gt;}
%    \begin{macrocode}
    \expandafter\expandafter\expandafter\pxrr@decompose\expandafter\expandafter\expandafter{%
      \ltx@zapspace{#1}%
    }%
%    \end{macrocode}
% \result\pxrr@res\pxrr@pre{{&lt;pre-break_1&gt;}}\pxrr@inter{{&lt;post-break_1&gt;}}\ldots\pxrr@inter{{&lt;post-break_n&gt;}}\pxrr@post
% \par 譛螟悶↓\verb+{}+縺悟｢励∴繧欺cs{pxrr@decompose}縺ｮ莉墓ｧ倥�縺ｨ繧翫≠縺医★豌励↓縺励↑縺��
% \par #2縺ｮ遨ｺ逋ｽ縺ｯ\cs{ltx@zapspace}縺ｧ辟｡隕悶�
%    \begin{macrocode}
    \let\pxrr@inter\outorb@disc@inter
    \let\pxrr@pre\pxrr@inter
    \let\pxrr@post\outorb@disc@post
    \pxrr@res
  }%
}
%    \end{macrocode}
% \begin{macro}{\outorb@disc@post}
% \par \cs{outorb@discretionary}縺ｮ邨ゆｺ��逅��
%    \begin{macrocode}
\def\outorb@disc@post{%
  \global\advance\outorb@disc@count\ltx@one
  \endgroup
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@disc@inter}
% \par\cs{discretionary}邨�∩遶九※縲�
% \inarg1&lt;pre-break_n&gt;
% \inarg2\pxrr@inter
% \inarg3&lt;post-break_n&gt;
%    \begin{macrocode}
\def\outorb@disc@inter#1#2#3{%
  \ifx\pxrr@inter#2\else
%    \end{macrocode}
% \inarg2\pxrr@post
%    \begin{macrocode}
    \outorb@err{%
      Extra pre-break, or forgotten post-break in \string\outorb@discretionary
    }%
  \fi
  \pxrr@if@last{%
    \discretionary{%
      \outorb@disc@break@pre
      #1%
    }{%
      #3%
    }{%
      \outorb@disc@nobreak
      \outorb@disc@ifbreakTF{\kern\wd\outorb@disc@box}{\unhbox\outorb@disc@box}}%
  }{%
    \discretionary{%
      \outorb@disc@break@pre
      #1%
    }{%
      #3\outorb@disc@break@post
    }{}%
  }%
}
%    \end{macrocode}
% \end{macro}
% \par Aux譖ｸ縺榊�縺励�
% Discretionary縺ｫwhatsit繧貞�繧後ｋ縺ｫ縺ｯhbox遲峨〒蛹��蠢�ｦ√�
%
% \begin{macro}{\outorb@disc@break@post}
% \begin{macro}{\outorb@disc@break@record}
% &lt;post-break&gt;縺ｮ蝣ｴ蜷医�
%    \begin{macrocode}
\def\outorb@disc@break@post{%
  \hbox{\outorb@aux@write{%
%    \end{macrocode}
% \par 蛻�牡縺励◆縺薙→繧定ｨ倬鹸縲よｬ｡蝗�&lt;no-break&gt;繧貞�蜉帙＠縺ｪ縺��
%    \begin{macrocode}
    \string\outorb@disc@break@aux{\the\outorb@disc@count}{\outorb@thepage}{\the\inputlineno}%
      {\outorb@disccommand}%
%    \end{macrocode}
% \par \cs{csname}繝医Μ繝�け縺ｧ蛻�牡繧定ｨ倬鹸縺励∬､�焚邂�園縺ｧ縺ｮ蛻�牡繧呈､懷�縲�
% &lt;post-break_n&gt;縺ｨ&lt;pre-break_{n+1}&gt;縺ｯ隍�焚蝗櫁｡悟�蜑ｲ縺励※繧ょｿ�★蜷後§陦後√▽縺ｾ繧雁酔縺禄cs{shipout}荳ｭ縺ｫ縺ゅｋ縲�
% 驥崎､�､懷�縺ｯ&lt;pre-break&gt;縺ｧ縲�
%    \begin{macrocode}
    \noexpand\outorb@disc@break@record{\the\outorb@disc@count}%
  }}%
%    \end{macrocode}
% \par &lt;no-break&gt;縺ｮ雋�縺ｮ蟷��繧ｫ繝ｼ繝ｳ縲�
%    \begin{macrocode}
  \kern-\wd\outorb@disc@box
}
\def\outorb@disc@break@record#1{%
  \expandafter\ltx@gobble\csname outorb@disc@break@check@#1\endcsname
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\outorb@disc@break@pre}
% \begin{macro}{\outorb@disccommand}
% \begin{macro}{\outorb@disc@break@check}
% \par &lt;pre-break&gt;縺ｮ蝣ｴ蜷医�
% 縺薙ｌ縺後≠繧九�縺ｧpre-break縺ｯ遨ｺ縺ｫ縺ｪ繧峨★\cs{hyphenpenalty}縲�
% 隍�焚邂�園縺ｧ縺ｮ蛻�牡繧呈､懷�縺励お繝ｩ繝ｼ縺ｫ縺吶ｋ縲�
%    \begin{macrocode}
\def\outorb@disc@break@pre{%
  \hbox{\outorb@aux@write{%
    \noexpand\outorb@disc@break@check{\the\outorb@disc@count}{\the\inputlineno}%
      {\outorb@disccommand}%
      \expandafter\noexpand\csname outorb@disc@break@check@\the\outorb@disc@count\endcsname
  }}%
}
\def\outorb@disccommand{\noexpand\outorb@discretionary}
\def\outorb@disc@break@check#1#2#3#4{%
  \ifx#4\relax
    \expandafter\outorb@disc@break@check@error\expandafter{%
      \romannumeral-`0\outorb@thepage}{#1}{#2}{#3}%
  \fi
}
%    \end{macrocode}
% \begin{macro}{\outorb@disc@break@check@error}
% \par 螳悟�螻暮幕蜿ｯ閭ｽ縺ｪ繧ｨ繝ｩ繝ｼ縲Ｆxpl3縺ｮ\cs{msg\_expandable\_error:}\globstar 縺ゅ◆繧翫�螳溯｣�ｒ蜿り�↓縺励◆縲�
%    \begin{macrocode}
\def\outorb@tempa#1{%
  \def\outorb@disc@break@check@error##1##2##3##4{%
    \expandafter\expandafter\expandafter\ltx@carzero\ltx@firstofone{%
      #1##4at line ##3 break twice in p.##1. (##2)%
    }\@nil
  }%
}
\ltx@LocalExpandAfter\outorb@tempa\csname
  outoruby.sty Error:\endcsname
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\outorb@disc@nobreak}
% \par &lt;no-break&gt;縺ｮ蝣ｴ蜷医�
% 遒ｺ螳溘↓\cs{outorb@disc@break}繧医ｊ蠕後↑縺ｮ縺ｧ
% Label(s) may have changed.讀懷��亥�蜑ｲ縺励※縺�◆縺ｮ縺悟�蜑ｲ縺励↑縺上↑縺｣縺溷�ｴ蜷茨ｼ臥畑縲�
%    \begin{macrocode}
\def\outorb@disc@nobreak{%
  \hbox{\outorb@aux@write{%
    \string\outorb@disc@nobreak@aux{\the\outorb@disc@count}{\outorb@thepage}{\the\inputlineno}%
      {\outorb@disccommand}%
  }}%
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@disc@ifbreakTF}
% \par 蜑榊屓蜃ｦ逅�凾縺ｫ蜃ｦ逅�ｸｭ縺ｮ\cs{outorb@discretionary}蛻�牡縺励◆縺九�
% &lt;no-break&gt;繧呈緒逕ｻ縺吶ｋ縺倶ｻ｣繧上ｊ縺ｫ蜷後§蟷��kern縺ｫ縺吶ｋ縺九�
%    \begin{macrocode}
\def\outorb@disc@ifbreakTF{%
  \expandafter\ifx\csname outorb@disc@break@\the\outorb@disc@count\endcsname\relax
    \expandafter\ltx@secondoftwo
  \else
    \expandafter\ltx@firstoftwo
  \fi
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@disc@break@aux}
% \par Aux縺ｫ譖ｸ縺崎ｾｼ縺ｾ繧後ｋ蜻ｽ莉､縲�
% \inarg1 Id��\cs{outorb@disc@count}逕ｱ譚･��
% \inarg2 \cs{outorb@discretionary}縺御ｽｿ繧上ｌ縺溯｡檎分蜿ｷ
% \inarg3 \cs{outorb@discretionary}縺悟ｮ滄圀縺ｫ蜃ｺ蜉帙＆繧後◆繝壹�繧ｸ��\cs{outorb@thepage}逕ｱ譚･��
% \inarg4 隴ｦ蜻翫↓菴ｿ縺�さ繝槭Φ繝牙錐��\cs{outorb@disccommand}逕ｱ譚･��
%    \begin{macrocode}
\def\outorb@disc@break@aux#1#2#3#4{%
  \expandafter\ifx\csname outorb@disc@break@#1\endcsname\relax
    \global\expandafter\def\csname outorb@disc@break@#1\endcsname{}%
  \else
%    \end{macrocode}
% \par 莉･蜑阪�繧ｿ繧､繝励そ繝�ヨ縺ｧ隍�焚邂�園縺ｧ蛻�牡縺励◆蝣ｴ蜷郁ｭｦ蜻翫�
% 菴募屓繧ょ�繧九°繧ゅ＠繧後↑縺�￠縺ｩ縺ｾ縺ゅ＞縺�ｄ縲�
%    \begin{macrocode}
    \begingroup
    \ltx@LocToksA{#4}%
    \outorb@warn@noln{%
      \the\ltx@LocToksA at page #2 line #3 broke twice at last typeset.\MessageBreak
      The result may be incorrect%
    }%
    \endgroup
  \fi
}
%    \end{macrocode}
% \begin{macro}{\outorb@disc@nobreak@aux}
% 縺薙ｌ縺ｯLabel(s) may have changed.逕ｨ縺ｪ縺ｮ縺ｧ\verb+\begin{document}+縺ｧ縺ｯ蜃ｺ逡ｪ縺ｪ縺励�
%    \begin{macrocode}
\def\outorb@disc@nobreak@aux#1#2#3#4{%
}
%    \end{macrocode}
% \par \pkg{outoruby}縺ｮ隱ｭ縺ｿ霎ｼ縺ｿ繧偵ｄ繧√◆蝣ｴ蜷医↓繧ｨ繝ｩ繝ｼ繧貞�縺輔↑縺��
%    \begin{macrocode}
\outorb@AtBeginDocument{%
  \outorb@aux@write@immediate{%
    \outorb@aux@write@providecommand\outorb@disc@break@aux[4]{}%
    \outorb@aux@write@providecommand\outorb@disc@nobreak@aux[4]{}%
  }%
}
%    \end{macrocode}
% \par Label(s) may have changed.
%    \begin{macrocode}
\outorb@AtEndDocument{%
  \def\outorb@disc@break@aux#1#2#3#4{%
    \expandafter\ifx\csname outorb@disc@break@#1\endcsname\relax
%    \end{macrocode}
% \par 蛻�牡縺励※縺�↑縺九▲縺溘�縺悟�蜑ｲ縺吶ｋ繧医≧縺ｫ縺ｪ縺｣縺溷�ｴ蜷医�
%    \begin{macrocode}
      \outorb@labelchanged
    \fi
    \expandafter\def\csname outorb@disc@break@enddoc@#1\endcsname{}%
  }%
  \def\outorb@disc@nobreak@aux#1#2#3#4{%
    \expandafter\ifx\csname outorb@disc@break@#1\endcsname\relax\else% break last time
      \expandafter\ifx\csname outorb@disc@break@enddoc@#1\endcsname\relax% no break current time
%    \end{macrocode}
% \par 蛻�牡縺励※縺�◆縺ｮ縺後＠縺ｪ縺上↑縺｣縺溷�ｴ蜷医�
%    \begin{macrocode}
        \outorb@labelchanged
      \fi
    \fi
  }%
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsection{繝ｪ繧ｹ繝亥�逅�}
%
% \pxrbpkg 縺ｮ\pxrr@pre 縲―pxrr@inter 縲―pxrr@post 縺ｫ繧医ｋ繝ｪ繧ｹ繝医ｒ蛻ｩ逕ｨ縲�
% \pxrbpkg 縺ｫ縺ｪ繧峨＞縲∽ｸ闊ｬ縺ｫ繧ｰ繝ｫ繝ｼ繝斐Φ繧ｰ縺ｯ縺励※縺翫ｉ縺喀cs{pxrr@pre}縺ｪ縺ｩ縺ｮ螳夂ｾｩ繧剃ｸ頑嶌縺阪☆繧九�縺ｧ豕ｨ諢上�
% \pxrbpkg 縺後げ繝ｫ繝ｼ繝斐Φ繧ｰ縺励※縺ｪ縺��縺ｯ螟壼�蜃ｦ逅�柑邇��縺溘ａ縲�
%
% \begin{macro}{\outorb@pxrr@reverse}
% \movempar
% \inarg1 \pxrr@pre{&lt;X_1&gt;}\pxrr@inter{&lt;X_2&gt;}\ldots\pxrr@inter{&lt;X_n&gt;}\pxrr@post
% \result\outorb@res \pxrr@pre{&lt;X_n&gt;}\ldots\pxrr@inter{&lt;X_2&gt;}\pxrr@inter{&lt;X_1&gt;}\pxrr@post
%    \begin{macrocode}
\def\outorb@pxrr@reverse@list#1{%
  \let\outorb@res\ltx@empty
  \def\pxrr@pre##1{%
    \ltx@LocalPrependToMacro\outorb@res{%
      {##1}\pxrr@post
    }%
  }%
  \def\pxrr@inter##1{%
    \ltx@LocalPrependToMacro\outorb@res{%
      {##1}\pxrr@inter
    }%
  }%
  \def\pxrr@post{%
    \ltx@LocalPrependToMacro\outorb@res{%
      \pxrr@pre
    }%
  }%
  #1%
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@pxrr@step@list}
% \movempar
% \inarg1 \pxrr@pre{&lt;X_1&gt;}\pxrr@inter{&lt;X_2&gt;}\ldots\pxrr@inter{&lt;X_n&gt;}\pxrr@post
% \result\outorb@res
% \pxrr@pre{\pxrr@post}\ttend1
% \pxrr@inter{\pxrr@pre{&lt;X_1&gt;}\pxrr@post}\ttend1
% \pxrr@inter{\pxrr@pre{&lt;X_1&gt;}\pxrr@inter{&lt;X_2&gt;}\pxrr@post}\ttend1
% \texttt\vdots\\\ttindent
% \pxrr@inter{\pxrr@pre{&lt;X_1&gt;}\pxrr@inter{&lt;X_2&gt;}\ldots\pxrr@inter{&lt;X_n&gt;}\pxrr@post}\ttend1
% \pxrr@post
%    \begin{macrocode}
\def\outorb@pxrr@step@list#1{%
  \def\outorb@res{\pxrr@pre{\pxrr@post}}%
  \def\pxrr@pre##1##2{%
    \ltx@LocalAppendToMacro\outorb@res{%
      \pxrr@inter{%
        \pxrr@pre{##1}\pxrr@post
      }%
    }%
    ##2{\pxrr@pre{##1}}%
  }%
  \def\pxrr@inter##1##2##3{%
    \ltx@LocalAppendToMacro\outorb@res{%
      \pxrr@inter{%
        ##1\pxrr@inter{##2}\pxrr@post
      }%
    }%
    ##3{##1\pxrr@inter{##2}}%
  }%
  \def\pxrr@post##1{%
    \ltx@LocalAppendToMacro\outorb@res{%
      \pxrr@post
    }%
  }%
  #1%
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@pxrr@rstep@list}
% \movempar
% \inarg1 \pxrr@pre{&lt;X_1&gt;}\pxrr@inter{&lt;X_2&gt;}\ldots\pxrr@inter{&lt;X_n&gt;}\pxrr@post
% \result\outorb@res
% \pxrr@pre{\pxrr@post}\ttend1
% \pxrr@inter{\pxrr@pre{&lt;X_1&gt;}\pxrr@post}\ttend1
% \pxrr@inter{\pxrr@pre{&lt;X_2&gt;}\pxrr@inter{&lt;X_1&gt;}\pxrr@post}\ttend1
% \texttt\vdots\\\ttindent
% \pxrr@inter{\pxrr@pre{&lt;X_n&gt;}\ldots\pxrr@inter{&lt;X_2&gt;}\pxrr@inter{&lt;X_1&gt;}\pxrr@post}\ttend1
% \pxrr@post
%    \begin{macrocode}
\def\outorb@pxrr@rstep@list#1{%
  \def\outorb@res{\pxrr@pre{\pxrr@post}}%
  \def\pxrr@pre##1##2{%
    \ltx@LocalAppendToMacro\outorb@res{%
      \pxrr@inter{%
        \pxrr@pre{##1}\pxrr@post
      }%
    }%
    ##2{\pxrr@inter{##1}\pxrr@post}%
  }%
  \def\pxrr@inter##1##2##3{%
    \ltx@LocalAppendToMacro\outorb@res{%
      \pxrr@inter{%
        \pxrr@pre{##2}##1%
      }%
    }%
    ##3{\pxrr@inter{##2}##1}%
  }%
  \def\pxrr@post##1{%
    \ltx@LocalAppendToMacro\outorb@res{%
      \pxrr@post
    }%
  }%
  #1%
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@pxrr@product@list}
% \movempar
% \inarg1 \pxrr@pre{&lt;X_1&gt;}\pxrr@inter{&lt;X_2&gt;}\ldots\pxrr@inter{&lt;X_n&gt;}\pxrr@post
% \result\outorb@res
% \pxrr@pre\\\@@ttend2
%   \A{\pxrr@post}\ttend2
%   \A{\pxrr@pre{&lt;X_1&gt;}\pxrr@inter{&lt;X_2&gt;}\ldots\pxrr@inter{&lt;X_n&gt;}\pxrr@post}\ttend1
% \pxrr@inter\\\@@ttend2
%   \A{\pxrr@pre{&lt;X_1&gt;}\pxrr@post}\ttend2
%   \A{\pxrr@pre{&lt;X_2&gt;}\ldots\pxrr@inter{&lt;X_n&gt;}\pxrr@post}\ttend1
% \vdots\\\ttindent
% \pxrr@inter\\\@@ttend2
%   \A{\pxrr@pre{&lt;X_1&gt;}\pxrr@inter{&lt;X_2&gt;}\ldots\pxrr@inter{&lt;X_n&gt;}\pxrr@post}\ttend2
%   \A{\pxrr@post}\ttend1
% \pxrr@post
%    \begin{macrocode}
\def\outorb@pxrr@product@list#1{%
  \outorb@pxrr@step@list{#1}%
  \let\outorb@pxrr@product@list@tempa\outorb@res
  \outorb@pxrr@reverse@list{#1}%
  \expandafter\outorb@pxrr@rstep@list\expandafter{\outorb@res}%
  \expandafter\outorb@pxrr@reverse@list\expandafter{\outorb@res}%
  \pxrr@zip@list\outorb@pxrr@product@list@tempa\outorb@res
  \let\outorb@res\pxrr@res
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@pxrr@join@list}
% \movempar
% \inarg1 &lt;|&gt;
% \inarg2 \pxrr@pre{&lt;X_1&gt;}\pxrr@inter{&lt;X_2&gt;}\ldots\pxrr@inter{&lt;X_n&gt;}\pxrr@post
% \result\outorb@res
%   &lt;X_1&gt;&lt;|&gt;&lt;X_2&gt;&lt;|&gt;\ldots &lt;|&gt;&lt;X_n&gt;
%    \begin{macrocode}
\def\outorb@pxrr@join@list#1#2{%
  \let\outorb@res\ltx@empty
  \def\pxrr@inter##1{%
    \pxrr@if@last{%
      \ltx@LocalAppendToMacro\outorb@res{##1}%
    }{%
      \ltx@LocalAppendToMacro\outorb@res{##1#1}%
    }%
  }%
  \let\pxrr@pre\pxrr@inter
  \def\pxrr@post{\ltx@gobble\pxrr@post}%
  #2%
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@pxrr@pair@list}
% \movempar
% \inarg1 \pxrr@pre{&lt;X_1&gt;}{&lt;Y_1&gt;}\pxrr@inter{&lt;X_2&gt;}{&lt;Y_2&gt;}\ldots\pxrr@inter{&lt;X_n&gt;}{&lt;Y_n&gt;}\pxrr@post
% \result\outorb@res
% \pxrr@pre{{&lt;X_1&gt;}{&lt;Y_1&gt;}}\pxrr@inter{{&lt;X_2&gt;}{&lt;Y_2&gt;}}\ldots\pxrr@inter{{&lt;X_n&gt;}{&lt;Y_n&gt;}}\pxrr@post
%    \begin{macrocode}
\def\outorb@pxrr@pair@list#1{%
  \let\outorb@res\ltx@empty
  \def\pxrr@pre##1##2{%
    \ltx@LocalAppendToMacro\outorb@res{%
      \pxrr@pre{{##1}{##2}}%
    }%
  }%
  \def\pxrr@inter##1##2{%
    \ltx@LocalAppendToMacro\outorb@res{%
      \pxrr@inter{{##1}{##2}}%
    }%
  }%
  \def\pxrr@post{%
    \ltx@LocalAppendToMacro\outorb@res{%
      \pxrr@post
    }%
  }%
  #1%
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@pxrr@ifemptyTF}
% #1縺圭pxrr@post 縺ｮ縺ｿ縺九ｉ縺ｪ繧九°縲�
%    \begin{macrocode}
\def\outorb@pxrr@ifemptyTF#1{%
  \begingroup
  \def\outorb@tempa{#1}%
  \def\outorb@tempb{\pxrr@post}%
  \expandafter\endgroup\ifx\outorb@tempa\outorb@tempb
    \expandafter\ltx@firstoftwo
  \else
    \expandafter\ltx@secondoftwo
  \fi
}
%    \end{macrocode}
% \end{macro}
%
% \subsection{繧ｪ繝励す繝ｧ繝ｳ隗｣譫図
%
% \begin{macro}{\outorb@ifstreqTF}
% #1縺ｨ#2縺梧枚蟄怜�縺ｨ縺励※遲峨＠縺�°�亥ｮ悟�螻暮幕縺励※豈碑ｼ�ｼ峨�
%    \begin{macrocode}
\def\outorb@ifstreqTF#1#2{%
  \begingroup
  \edef\outorb@tempa{#1}%
  \edef\outorb@tempb{#2}%
  \expandafter\endgroup\ifx\outorb@tempa\outorb@tempb
    \expandafter\ltx@firstoftwo
  \else
    \expandafter\ltx@secondoftwo
  \fi
}
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{\pxrbpkg 縺ｮ繧ｪ繝励す繝ｧ繝ｳ繝代�繧ｹ}
%
% \begin{macro}{\outorb@opt@parse}
% 繧ｪ繝励す繝ｧ繝ｳ繧定ｧ｣譫舌＠縺ｦ蛻�｡槭�
% \inarg1 \cs{jruby}縺ｮ&lt;option&gt;縺ｫ逶ｸ蠖薙☆繧九ｂ縺ｮ��\oarg[]縺ｪ縺暦ｼ峨�
% \result\outorb@opt@parse@bintr 蜑埼ｲ蜈･險ｭ螳�
% \result\outorb@opt@parse@bsub 蜑崎｣懷勧險ｭ螳�
% \result\outorb@opt@parse@mode 繝｢繝ｼ繝�
% \result\outorb@opt@parse@asub 蠕瑚｣懷勧險ｭ螳�
% \result\outorb@opt@parse@aintr 蠕碁ｲ蜈･險ｭ螳�
% \par \pxrbpkg 縺ｮ譛蛾剞繧ｪ繝ｼ繝医�繝医Φ縺ｮ繝代Λ繝｡繧ｿ繧貞盾辣ｧ縲�
% \begin{flushleft}
%   \begin{tabular}{ll}
%     \toprule
%     \cs\outorb@po@FS &amp; 迴ｾ蝨ｨ縺ｮ迥ｶ諷� \\
%     \cs\pxrr@po@C@&lt;譁�ｭ�&gt; &amp; 譁�ｭ励け繝ｩ繧ｹ \\
%     \cs\pxrr@po@TR@&lt;迴ｾ蝨ｨ縺ｮ迥ｶ諷�&gt;@&lt;譁�ｭ励け繝ｩ繧ｹ&gt; &amp; 驕ｷ遘ｻ蜈医�迥ｶ諷� \\
%     \bottomrule
%   \end{tabular}
% \end{flushleft}
%    \begin{macrocode}
\def\outorb@opt@parse#1{%
  \outorb@ifstreqTF{#1}{||}{%
    \def\outorb@opt@opt{|-|}%
  }{%
    \edef\outorb@opt@opt{#1}%
  }%
  \let\outorb@opt@parse@bintr\ltx@empty
  \let\outorb@opt@parse@bsub\ltx@empty
  \let\outorb@opt@parse@mode\ltx@empty
  \let\outorb@opt@parse@asub\ltx@empty
  \let\outorb@opt@parse@aintr\ltx@empty
  \def\outorb@po@FS{bi}%
  \expandafter\outorb@opt@parse@loop\outorb@opt@opt @\outorb@end
}
%    \end{macrocode}
% \begin{macro}{\outorb@opt@parse@loop}
% 譛蛾剞繧ｪ繝ｼ繝医�繝医Φ縲�
%    \begin{macrocode}
\def\outorb@opt@parse@loop#1{%
  \if#1@%
    \expandafter\outorb@opt@parse@exit
  \fi
  \ltx@ifundefined{pxrr@po@C@#1}{%
    \outorb@err{%
      Unexpected letter `#1' found%
    }%
  }{%
    \expandafter\let\expandafter\outorb@po@FS\csname
      pxrr@po@TR@\outorb@po@FS @\csname pxrr@po@C@#1\endcsname\endcsname
    \ifx\outorb@po@FS\relax
      \outorb@err{%
        Unexpected letter `#1' found%
      }%
    \fi
%    \end{macrocode}
% \begin{center}
% \newcommand\otherwise{{\@@it\textit{otherwise}}}
% \begin{minipage}{0.5\textwidth}\centering
%   \begin{tabular}{c&gt;{\ttfamily}ll&lt;{?}}
%     \multicolumn{3}{c}{譁�ｭ励け繝ｩ繧ｹ} \\
%     \toprule
%     F &amp; @ &amp; finish \\
%     V &amp; | &amp; vertical \\
%     S &amp; :.*! &amp; sub \\
%     B &amp; \string&lt;( &amp; befone inter \\
%     A &amp; &gt;) &amp; after inter \\
%     M &amp; -mgjMJchHPSeEfF &amp; mode \\
%     \bottomrule
%   \end{tabular}^^A
% \end{minipage}\nobreak
% \begin{minipage}{0.5\textwidth}\centering
%   \begin{tabular}{cl&lt;{?}l}
%     \multicolumn{3}{c}{迥ｶ諷急 \\
%     \toprule
%     bi &amp; before inter &amp; 蛻晄悄蛟､ \\
%     bb &amp; before, bar \\
%     bs &amp; before, sub \\
%     mi &amp; mode \\
%     as &amp; after, sub \\
%     ai &amp; after, inter \\
%     ab &amp; after, bar \\
%     fi &amp; finish \\
%     \bottomrule
%   \end{tabular}\par\raggedright\medskip\footnotesize
%   谺｡縺ｮ謖�ｮ壹ｒ縺ｩ縺�ｧ｣驥医☆繧九°縺ｨ縺�≧諢丞袖縺ｧ縺ゅｋ縲�
%   bs縺ｪ繧画ｬ｡縺ｫ譚･繧区欠螳壹�蜑崎｣懷勧縺九◎繧御ｻ･髯阪�繧ゅ�縲�
% \end{minipage}\\[\bigskipamount]
% \begin{minipage}{0.5\textwidth}\centering
%   \begin{tabular}{clll}
%     \toprule
%     譁�ｭ励け繝ｩ繧ｹ &amp; 迥ｶ諷� &amp; 驕ｷ遘ｻ蜈� &amp; 險ｭ螳壹�遞ｮ鬘� \\\midrule
%     V &amp; bi, bb &amp; bb, bs &amp; 蜑埼ｲ蜈･ \\
%     &amp; \otherwise &amp; ab, fi &amp; 蠕碁ｲ蜈･ \\
%     S &amp; bi, bb, bs &amp; bs &amp; 蜑崎｣懷勧 \\
%     &amp; \otherwise &amp; as &amp; 蠕瑚｣懷勧 \\
%     B &amp; bi, bb &amp; bs &amp; 蜑埼ｲ蜈･ \\
%     A &amp; &amp; fi &amp; 蠕碁ｲ蜈･ \\
%     M &amp; &amp; mi &amp; 繝｢繝ｼ繝� \\
%     \bottomrule
%   \end{tabular}^^A
% \end{minipage}\nobreak
% \begin{minipage}{0.5\textwidth}\centering
%   \begin{tabular}{cll}
%     \toprule
%     驕ｷ遘ｻ蜈� &amp; 譁�ｭ励け繝ｩ繧ｹ &amp; 險ｭ螳壹�遞ｮ鬘� \\ \midrule
%     bi &amp; &amp; 蜑埼ｲ蜈･�亥ｭ伜惠縺帙★�� \\
%     bb &amp; &amp; 蜑埼ｲ蜈･ \\
%     bs &amp; S &amp; 蜑崎｣懷勧 \\
%     &amp; \otherwise &amp; 蜑埼ｲ蜈･ \\
%     mi &amp; &amp; 繝｢繝ｼ繝� \\
%     as &amp; &amp; 蠕瑚｣懷勧 \\
%     ai &amp; &amp; 蠕瑚｣懷勧�育樟蟄倥○縺夲ｼ� \\
%     ab &amp; &amp; 蠕碁ｲ蜈･ \\
%     fi &amp; &amp; 蠕碁ｲ蜈･ \\
%     \bottomrule
%   \end{tabular}^^A
% \end{minipage}%
% \end{center}
% \result\outorb@po@FS &lt;驕ｷ遘ｻ蜈�&gt;
% \par 驕ｷ遘ｻ蜈医°繧芽ｨｭ螳壹�遞ｮ鬘槭ｒ蛻�｡槭�
%    \begin{macrocode}
    \outorb@ifstreqTF{\outorb@po@FS}{bi}{%
      \ltx@LocalAppendToMacro\outorb@opt@parse@bintr{#1}%
    }{\outorb@ifstreqTF{\outorb@po@FS}{bb}{%
      \ltx@LocalAppendToMacro\outorb@opt@parse@bintr{#1}%
    }{\outorb@ifstreqTF{\outorb@po@FS}{bs}{%
      \outorb@ifstreqTF{\csname pxrr@po@C@#1\endcsname}{S}{%
        \ltx@LocalAppendToMacro\outorb@opt@parse@bsub{#1}%
      }{%
        \ltx@LocalAppendToMacro\outorb@opt@parse@bintr{#1}%
      }%
    }{\outorb@ifstreqTF{\outorb@po@FS}{mi}{%
      \ltx@LocalAppendToMacro\outorb@opt@parse@mode{#1}%
    }{\outorb@ifstreqTF{\outorb@po@FS}{as}{%
      \ltx@LocalAppendToMacro\outorb@opt@parse@asub{#1}%
    }{\outorb@ifstreqTF{\outorb@po@FS}{ai}{%
      \ltx@LocalAppendToMacro\outorb@opt@parse@asub{#1}%
    }{\outorb@ifstreqTF{\outorb@po@FS}{ab}{%
      \ltx@LocalAppendToMacro\outorb@opt@parse@aintr{#1}%
    }{\outorb@ifstreqTF{\outorb@po@FS}{fi}{%
      \ltx@LocalAppendToMacro\outorb@opt@parse@aintr{#1}%
    }{%
      \outorb@err{%
        This can happen, may be a bug.\MessageBreak
        (\outorb@po@FS)\MessageBreak
        pxrubrica: \csname ver@pxrubrica.sty\endcsname,\MessageBreak
        outoruby: \ltx@space\csname ver@outoruby.sty\endcsname
      }%
    }}}}}}}}%
  }%
  \outorb@opt@parse@loop
}
%    \end{macrocode}
% \begin{macro}{\outorb@opt@parse@exit}
%    \begin{macrocode}
\def\outorb@opt@parse@exit#1\outorb@end{%
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{\cs{outorubysetup}}
%
% \begin{macro}{\outorb@setup@bintr}
% &lt;option_2&gt;縺ｮ蜑埼ｲ蜈･謖�ｮ壹�譌｢螳壼､縲�
% \begin{macro}{\outorb@setup@aintf}
% &lt;option_2&gt;縺ｮ蠕碁ｲ蜈･謖�ｮ壹�譌｢螳壼､縲�
% \begin{macro}{\outorubysetup}
% \begin{macro}{\outorb@outorubysetup}
% #1繧箪cs{outoruby}縺ｮ&lt;option_2&gt;縺ｮ譌｢螳壼､縺ｫ縲�
% 蜑埼ｲ蜈･縲∝ｾ碁ｲ蜈･莉･螟悶�辟｡隕悶＠縲√◎繧後◇繧梧賜莉悶�
%    \begin{macrocode}
\let\outorb@setup@bintr\ltx@empty
\let\outorb@setup@aintr\ltx@empty
\outorb@errifdefined\outorubysetup
\outorb@protected\def\outorubysetup#1{%
  \begingroup
  \outorb@opt@parse{#1}%
  \edef\outorb@tempa{%
    \ifx\outorb@opt@parse@bintr\ltx@empty\else
      \def\noexpand\outorb@setup@bintr{%
        \outorb@opt@parse@bintr
      }%
    \fi
    \ifx\outorb@opt@parse@aintr\ltx@empty\else
      \def\noexpand\outorb@setup@aintr{%
        \outorb@opt@parse@aintr
      }%
    \fi
  }%
  \expandafter\endgroup\outorb@tempa
}
\let\outorb@outorubysetup\outorubysetup
\outorubysetup{||-||}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{\cs{outoruby}縺ｮ繧ｪ繝励す繝ｧ繝ｳ蜃ｦ逅�}
%
% \begin{macro}{\outorb@opt@prebreak}
% 陦梧忰蠖｢縺ｮ\cs{jruby}縺ｫ貂｡縺吶が繝励す繝ｧ繝ｳ��\A[]縺ゅｊ�峨�
% \begin{macro}{\outorb@opt@postbreak}
% 陦碁�ｭ蠖｢縺ｮ\cs{jruby}縺ｫ貂｡縺吶が繝励す繝ｧ繝ｳ��\A[]縺ゅｊ�峨�
% \begin{macro}{\outorb@opt@nobreak}
% 陦御ｸｭ蠖｢縺ｮ\cs{jruby}縺ｫ貂｡縺吶が繝励す繝ｧ繝ｳ��\A[]縺ゅｊ�峨�
% \begin{macro}{\outorb@opt@pre}
% &lt;pre-space&gt;
% \begin{macro}{\outorb@opt@post}
% &lt;post-space&gt;
% \begin{macro}{\outorb@opt}
% \leavevmode\par
% \inarg1 \cs{outoruby}縺ｮ繧ｪ繝励す繝ｧ繝ｳ蠑墓焚繧貞�驛ｨ縺ｾ縺ｨ繧√◆繧ゅ���\A[]縺ゅｊ�峨らｩｺ繧ゅ≠繧雁ｾ励ｋ縲�
%    \begin{macrocode}
\def\outorb@opt#1{%
  \outorb@opt@opt#1[][][][]\outorb@nil
}
%    \end{macrocode}
% \begin{macro}{\outorb@err@mustempty}
% 螳滄圀縺ｫ縺ｯ荳崎ｦ√�
%    \begin{macrocode}
\def\outorb@err@mustempty#1#2{%
  \ltx@ifblank{#1}{}{%
    \outorb@err{%
      Argument of \string#2 doesn't match its definition%
    }%
  }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@opt@opt}
% \movempar
% \inarg2 &lt;option_1&gt;
% \inarg4 &lt;option_2&gt;
% \inarg6 &lt;pre-space&gt;
% \inarg8 &lt;post-space&gt;
%    \begin{macrocode}
\def\outorb@opt@opt#1[#2]#3[#4]#5[#6]#7[#8]#9\outorb@nil{%
  \outorb@err@mustempty{#1}\outoruby
  \outorb@err@mustempty{#3}\outoruby
  \outorb@err@mustempty{#5}\outoruby
  \outorb@err@mustempty{#7}\outoruby
  \def\outorb@opt@pre{#6}%
  \def\outorb@opt@post{#8}%
%    \end{macrocode}
% \par 繧ｪ繝励す繝ｧ繝ｳ繝代�繧ｹ縲�
%    \begin{macrocode}
  \outorb@opt@parse{#4}%
  \ifx\outorb@opt@parse@bintr\ltx@empty
    \let\outorb@opt@break@bintr\outorb@setup@bintr
  \else
    \let\outorb@opt@break@bintr\outorb@opt@parse@bintr
  \fi
  \ifx\outorb@opt@parse@aintr\ltx@empty
    \let\outorb@opt@break@aintr\outorb@setup@aintr
  \else
    \let\outorb@opt@break@aintr\outorb@opt@parse@aintr
  \fi
  \outorb@opt@parse{#2}%
  \ifx\outorb@opt@parse@mode\ltx@empty
%    \end{macrocode}
% \par \verb+||+縺ｯ\verb+|-|+縺ｨ謇ｱ繧上ｌ縺ｦ縺励∪縺��
%    \begin{macrocode}
    \def\outorb@opt@parse@mode{-}%
  \fi
  \edef\outorb@opt@nobreak{[#2]}%
  \edef\outorb@opt@prebreak{[%
    \outorb@opt@parse@bintr
    \outorb@opt@parse@bsub
    \outorb@opt@parse@mode
    \outorb@opt@break@aintr
  ]}%
  \edef\outorb@opt@postbreak{[%
    \outorb@opt@break@bintr
    \outorb@opt@parse@mode
    \outorb@opt@parse@asub
    \outorb@opt@parse@aintr
  ]}%
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\outorb@opt@ifnobreakTF}
% 陬懷勧險ｭ螳壹°繧芽｡悟�蜑ｲ縺ｮ蜿ｯ蜷ｦ繧呈滑謠｡縲�
% \inarg1 陬懷勧險ｭ螳壹�
%    \begin{macrocode}
\def\outorb@opt@ifnobreakTF#1{%
  \edef\outorb@tempa{#1}%
  \expandafter\outorb@opt@ifnobreak#1*\outorb@nil
}
\def\outorb@opt@ifnobreak#1*#2\outorb@nil{%
  \ltx@ifblank{#2}{%
    \ltx@secondoftwo
  }{%
    \ltx@firstoftwo
  }%
}
%    \end{macrocode}
% \end{macro}
%
% \subsection{譛ｬ菴党
%
% \begin{macro}{\outoruby}
% \begin{macro}{\outorb@outoruby}
% \@cs{outoruby}[&lt;option_1&gt;][&lt;option_2&gt;][&lt;pre-space&gt;][&lt;post-space&gt;]{&lt;body&gt;}{&lt;ruby&gt;} \\
% &lt;body&gt;: &lt;body_1&gt;&lt;body_2&gt;\ldots &lt;body_n&gt; \\
% &lt;ruby&gt;: &lt;ruby_1&gt;\texttt|&lt;ruby_2&gt;\texttt|\ldots \texttt|&lt;ruby_n&gt;
%    \begin{macrocode}
\outorb@errifdefined\outoruby
\outorb@protected\def\outoruby{%
  \outorb@outorb@opt{}[]%
}
\let\outorb@outoruby\outoruby
%    \end{macrocode}
% \begin{macro}{\outorb@outorb@opt}
% 繧ｪ繝励す繝ｧ繝ｳ繧貞�驛ｨ蜿門ｾ励＠縺ｦ\cs{outorb@outorb@checkv}縺ｸ��\A[]縺､縺搾ｼ峨�
%    \begin{macrocode}
\def\outorb@outorb@opt#1[#2]{%
  \ltx@ifnextchar[{%
    \outorb@outorb@opt{#1[{#2}]}%
  }{%
    \expandafter\outorb@outorb@checkv\expandafter{\ltx@gobblethree #1[{#2}]}%
  }%
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@outorb@checkv}
% 谿ｵ關ｽ縺ｯ縺倥ａ�亥桙逶ｴ繝｢繝ｼ繝会ｼ峨↑繧蛾比ｸｭ縺ｧ蛻�牡縺励↑縺�→菫｡縺倥ｋ縲�
% 谿ｵ關ｽ縺ｯ縺倥ａ縺ｨ\pxrbpkg 縺ｫ遏･繧峨○繧九◆繧∫音縺ｫ菴輔ｂ縺帙★蜃ｦ逅�ｸｸ謚輔￡縲�
%    \begin{macrocode}
\def\outorb@outorb@checkv#1{%
  \ifvmode
    \begingroup
    \outorb@opt{#1}%
    \expandafter\outorb@outorb@vmode% \endgroup
  \else
    \outorb@prologue% \begingroup
    \outorb@opt{#1}%
    \expandafter\outorb@outorb% \endgroup (\outorb@epilogue)
  \fi
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@outorb}
% \begin{macro}{\outorb@outorb@check@kinsoku}
% \pxrbpkg 縺ｮ遖∝援逕ｨ縺ｮ蜈郁ｪｭ縺ｿ蜃ｦ逅�ｒdiscretionary縺ｫ蜈･繧後ｋ蜑阪↓莉｣繧上ｊ縺ｫ繧�▲縺ｦ縺翫￥縲�
%    \begin{macrocode}
\def\outorb@outorb#1#2{%
  \def\outorb@outorb@tempa{%
    \outorb@outorb@main{#1}{#2}%
  }%
  \ifpxrr@safe@mode
%    \end{macrocode}
% \par 螳牙�繝｢繝ｼ繝峨�
%    \begin{macrocode}
    \expandafter\outorb@outorb@tempa
  \else
    \expandafter\outorb@outorb@check@kinsoku\expandafter\outorb@outorb@tempa
  \fi
}
\def\outorb@outorb@check@kinsoku#1{%
  \pxrr@abodyfalse
  \pxrr@check@kinsoku#1%
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \subsubsection{繝｡繧､繝ｳ縺ｮ蜃ｦ逅�}
%
% \begin{macro}{\outorb@outorb@main}
% \movempar
% \inarg1 &lt;body&gt;
% \inarg2 &lt;ruby&gt;
% \par 繧ｪ繝励す繝ｧ繝ｳ縺ｯ\cs{outorb@opt}縺ｧ蜃ｦ逅�ｸ医∩縲�
%    \begin{macrocode}
\def\outorb@outorb@main#1#2{%
%    \end{macrocode}
% \par 蠕檎ｦ∝援縲�
%    \begin{macrocode}
  \edef\outorb@after@penalty{\the\pxrr@cntr}%
  \ifnum\outorb@after@penalty&gt;\outorb@iM
    \outorb@outorb@anobrtrue
  \else
%    \end{macrocode}
% \par 繧ｪ繝励す繝ｧ繝ｳ縺ｮ蠕瑚｣懷勧謖�ｮ壹↓繧医ｋ蠕梧隼陦檎ｦ∵ｭ｢縲�
%    \begin{macrocode}
    \outorb@opt@ifnobreakTF\outorb@opt@parse@asub{%
      \outorb@outorb@anobrtrue
    }{%
      \outorb@outorb@anobrfalse
    }%
  \fi
  \ifnum\outorb@before@penalty&gt;\outorb@iM
    \outorb@outorb@bnobrtrue
  \else
    \outorb@opt@ifnobreakTF\outorb@opt@parse@bsub{%
      \outorb@outorb@bnobrtrue
    }{%
      \outorb@outorb@bnobrfalse
    }%
  \fi
%    \end{macrocode}
% \par 蜑榊ｾ後↓蜈･繧後ｋ繧ｰ繝ｫ繝ｼ縲�
% 陬懷勧險ｭ螳壹↓繧医ｋ繧ゅ�縺ｯ縺薙％縺ｧ縺ｯ縺ｪ縺重iscretionary縺ｮ荳ｭ霄ｫ縺ｧ蜈･繧後ｉ繧後ｋ�井ｼｸ邵ｮ縺ｯ縺励↑縺上↑繧具ｼ峨�
%    \begin{macrocode}
  \ltx@LocalAppendToMacro\outorb@outorb@pre{%
    \hskip\outorb@before@glue\relax
  }%
  \expandafter\ltx@LocalAppendToMacro\expandafter\outorb@outorb@pre\expandafter{%
    \outorb@opt@pre
  }%
  \expandafter\ltx@LocalAppendToMacro\expandafter\outorb@outorb@post\expandafter{%
    \outorb@opt@post
  }%
%    \end{macrocode}
% \par 蠑墓焚蜃ｦ逅��
%    \begin{macrocode}
  \pxrr@decompbar{#1}%
  \let\outorb@body@list\pxrr@res
  \edef\outorb@body@count{\the\pxrr@cntr}%
  \pxrr@decompbar{#2}%
  \let\outorb@ruby@list\pxrr@res
  \edef\outorb@ruby@count{\the\pxrr@cntr}%
  \ifpxrr@safe@mode
%    \end{macrocode}
% \par 螳牙�繝｢繝ｼ繝峨�
%    \begin{macrocode}
    \pxrr@unite@group\outorb@body@list
    \def\outorb@body@count{1}%
    \pxrr@unite@group\outorb@ruby@list
    \def\outorb@ruby@count{1}%
  \fi
  \ifnum\outorb@body@count&gt;\ltx@one
%    \end{macrocode}
% \par 蜿ｯ蜍輔げ繝ｫ繝ｼ繝励Ν繝薙�
% \pxrbpkg 譛ｪ螳溯｣�□縺後�縺ｨ縺ｾ縺夂�隱槭Ν繝薙→蜷後§謇ｱ縺�↓縺吶ｋ縲�
%    \begin{macrocode}
    \ifnum\outorb@body@count=\outorb@ruby@count\relax
      \outorb@outorb@mj{#1}{#2}%
    \else
      \outorb@err{%
        \string\outoruby\ltx@space group count mismatch (\outorb@body@count &lt;&gt; \outorb@ruby@count)%
      }%
    \fi
  \else
%    \end{macrocode}
% \par &lt;body&gt;縺圭verb+|+縺ｧ蛹ｺ蛻�ｉ繧後※縺�↑縺��ｴ蜷医�
% 繧ｰ繝ｫ繝ｼ繝怜腰菴阪↓蛻�牡縲�
%    \begin{macrocode}
    \ifpxrr@safe@mode\else
      \pxrr@decompose{#1}%
      \ifnum\outorb@ruby@count=\pxrr@cntr
%    \end{macrocode}
% \par 逵溘↓縺ｪ繧九�縺ｯ繝｢繝弱Ν繝薙°辭溯ｪ槭Ν繝薙∝⊃縺ｫ縺ｪ繧九�縺ｯ繧ｰ繝ｫ繝ｼ繝励Ν繝薙�蝣ｴ蜷医�
%    \begin{macrocode}
        \let\outorb@body@list\pxrr@res
        \edef\outorb@body@count{\the\pxrr@cntr}%
      \fi
    \fi
    \ifnum\outorb@body@count=\ltx@one
%    \end{macrocode}
% \par 繧ｰ繝ｫ繝ｼ繝励Ν繝薙→縺ｿ縺ｪ縺帙ｋ蝣ｴ蜷医�1譁�ｭ励�繝｢繝弱Ν繝薙∫�隱槭Ν繝薙ｒ蜷ｫ繧縺悟�逅��蜷後§縲�
% 縺薙�蝣ｴ蜷�&lt;ruby&gt;繧ょ腰荳繧ｰ繝ｫ繝ｼ繝励°繧峨↑縺｣縺ｦ縺�ｋ縺ｮ縺ｧ縲∫ｵ仙ｱ繝｢繝弱Ν繝薙→蜷後§蜃ｦ逅�′菴ｿ縺医ｋ縲�
%    \begin{macrocode}
      \outorb@outorb@mj{#1}{#2}%
    \else\ifnum\outorb@body@count=\outorb@ruby@count\relax
%    \end{macrocode}
% \par 繝｢繝弱Ν繝薙∫�隱槭Ν繝薙�
%    \begin{macrocode}
      \outorb@outorb@mj{#1}{#2}%
    \else
      \outorb@err{%
        \string\outoruby\ltx@space group count mismatch (\outorb@body@count &lt;&gt; \outorb@ruby@count)%
      }%
    \fi\fi
  \fi
  \outorb@epilogue
}
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{\cs{discretionary}邨�∩遶九※}
%
% \begin{macro}{\outorb@outorb@mj}
% \cs{outorb@discretionary}縺ｮ蠑墓焚繧貞ｮ滄圀縺ｫ邨�∩遶九※繧九�
% \intl\outorb@boyd@list \pxrr@pre{&lt;body_1&gt;}\pxrr@inter{&lt;body_2&gt;}\ldots\pxrr@inter{&lt;body_n&gt;}\pxrr@post
% \intl\outorb@boyd@list \pxrr@pre{&lt;ruby_1&gt;}\pxrr@inter{&lt;ruby_2&gt;}\ldots\pxrr@inter{&lt;ruby_n&gt;}\pxrr@post
% \par 蠑墓焚縺ｯ&lt;no-break&gt;逕ｨ縲�\cs{pxrr@post}縺ｧ菴ｿ繧上ｌ繧九�
% \inarg1 &lt;body&gt;
% \inarg2 &lt;ruby&gt;
%    \begin{macrocode}
\def\outorb@outorb@mj{%
  \expandafter\outorb@pxrr@product@list\expandafter{\outorb@body@list}%
  \expandafter\outorb@pxrr@pair@list\expandafter{\outorb@res}%
  \let\outorb@body@product@list\outorb@res
  \expandafter\outorb@pxrr@product@list\expandafter{\outorb@ruby@list}%
  \expandafter\outorb@pxrr@pair@list\expandafter{\outorb@res}%
  \let\outorb@ruby@product@list\outorb@res
  \pxrr@zip@list\outorb@body@product@list\outorb@ruby@product@list
%    \end{macrocode}
% \result\pxrr@res
% \pxrr@pre{\ttend2
%   {\pxrr@post}\ttend2
%   {\pxrr@pre{&lt;body_1&gt;}\pxrr@inter{&lt;body_2&gt;}\ldots\pxrr@inter{&lt;body_n&gt;}\pxrr@post}\ttend1
% }{\ttend2
%   {\pxrr@post}\ttend2
%   {\pxrr@pre{&lt;ruby_1&gt;}\pxrr@inter{&lt;ruby_2&gt;}\ldots\pxrr@inter{&lt;ruby_n&gt;}\pxrr@post}\ttend1
% }\pxrr@inter{\ttend2
%   {\pxrr@pre{&lt;body_1&gt;}\pxrr@post}\ttend2
%   {\pxrr@pre{&lt;body_2&gt;}\pxrr@inter{&lt;body_3&gt;}\ldots\pxrr@inter{&lt;body_n&gt;}\pxrr@post}\ttend1
% }{\ttend2
%   {\pxrr@pre{&lt;ruby_1&gt;}\pxrr@post}\ttend2
%   {\pxrr@pre{&lt;ruby_2&gt;}\pxrr@inter{&lt;ruby_3&gt;}\ldots\pxrr@inter{&lt;ruby_n&gt;}\pxrr@post}\ttend1
% }\ttend1
% \vdots\\\ttindent
% \pxrr@inter{\ttend2
%   {\pxrr@pre{&lt;body_1&gt;}\pxrr@inter{&lt;body_2&gt;}\ldots\pxrr@inter{&lt;body_n&gt;}\pxrr@post}\ttend2
%   {\pxrr@post}\ttend1
% }{\ttend2
%   {\pxrr@pre{&lt;ruby_1&gt;}\pxrr@inter{&lt;ruby_2&gt;}\ldots\pxrr@inter{&lt;ruby_n&gt;}\pxrr@post}\ttend2
%   {\pxrr@post}\ttend1
% }\pxrr@post
%    \begin{macrocode}
  \let\pxrr@pre\outorb@outorb@mj@pre
  \let\pxrr@inter\outorb@outorb@mj@inter
  \let\pxrr@post\outorb@outorb@mj@post
%    \end{macrocode}
% \result\outorb@outorb@disc@list
% \cs{outorb@discretionary}縺ｮ隨ｬ荳蠑墓焚縲�
%    \begin{macrocode}
  \let\outorb@outorb@disc@list\ltx@empty
  \pxrr@res
}
%    \end{macrocode}
% \begin{macro}{\ifoutorb@outorb@bnobr}
% \begin{macro}{\ifouotrb@outorb@anobr}
% 蜑榊ｾ後〒縺ｮ蛻�牡遖∵ｭ｢縺ｮ譛臥┌縲�
%    \begin{macrocode}
\ltx@newif\ifoutorb@outorb@bnobr% before no break
\ltx@newif\ifoutorb@outorb@anobr% after no break
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\outorb@outorb@mj@pre}
%    \begin{macrocode}
\def\outorb@outorb@mj@pre#1#2{%
  \ifoutorb@outorb@bnobr
%    \end{macrocode}
% \par 蜑榊�蜑ｲ遖∵ｭ｢縲�
% 縺薙％縺ｧ蛻�牡蜿ｯ閭ｽ縺ｪ繝代ち繝ｼ繝ｳ繧貞�繧後↑縺��
%    \begin{macrocode}
  \else
    \outorb@outorb@mj@makeruby#1#2%
  \fi
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@outorb@mj@inter}
%    \begin{macrocode}
\def\outorb@outorb@mj@inter#1#2{%
  \pxrr@if@last{%
    \ifoutorb@outorb@anobr
%    \end{macrocode}
% \par 蠕悟�蜑ｲ遖∵ｭ｢縲�
%    \begin{macrocode}
    \else
      \outorb@outorb@mj@makeruby#1#2%
    \fi
  }{%
    \outorb@outorb@mj@makeruby#1#2%
  }%
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@outorb@mj@makeruby}
% 1縺､縺ｮ&lt;pre-break_m&gt;縺ｨ&lt;post-break_m&gt;縺ｮ繝代ち繝ｼ繝ｳ繧剃ｽ懊ｋ縲�
% \cs{ifoutorb@bnobr}縺ｮ蝣ｴ蜷�$m=k$縲√◎縺�〒縺ｪ縺代ｌ縺ｰ$m=k+1$縲�
% \inarg1 \pxrr@pre{&lt;body_1&gt;}\pxrr@inter{&lt;body_2&gt;}\ldots \pxrr@inter{&lt;body_k&gt;}\pxrr@post
% \inarg2 \pxrr@pre{&lt;body_{k+1}&gt;}\pxrr@inter{&lt;body_{k+2}&gt;}\ldots \pxrr@inter{&lt;body_n&gt;}\pxrr@post
% \inarg3 \pxrr@pre{&lt;ruby_1&gt;}\pxrr@inter{&lt;ruby_2&gt;}\ldots \pxrr@inter{&lt;ruby_k&gt;}\pxrr@post
% \inarg4 \pxrr@pre{&lt;ruby_{k+1}&gt;}\pxrr@inter{&lt;ruby_{k+2}&gt;}\ldots \pxrr@inter{&lt;ruby_n&gt;}\pxrr@post
% \par #1縺ｨ#3縺九ｉ&lt;pre-break_m&gt;縲�#2縺ｨ#4縺九ｉ&lt;post-break_m&gt;縲�
%    \begin{macrocode}
\def\outorb@outorb@mj@makeruby#1#2#3#4{%
%    \end{macrocode}
% \par \cs{pxrr@inter}繝ｪ繧ｹ繝医�蜃ｦ逅�〒諢丞袖螟峨∴繧峨ｌ繧九�縺ｧ騾驕ｿ縺励※縺翫＞縺ｦ蠕後〒謌ｻ縺吶�
%    \begin{macrocode}
  \let\outorb@outorb@mj@makeruby@pre\pxrr@pre
  \let\outorb@outorb@mj@makeruby@inter\pxrr@inter
  \let\outorb@outorb@mj@makeruby@post\pxrr@post
%    \end{macrocode}
% \par 遨ｺ�亥腰荳\pxrr@post �峨�蝣ｴ蜷医―cs\jruby 螳溯｡後○縺�&lt;pre-break_m&gt;縺ｾ縺溘�&lt;post-break_m&gt;繧らｩｺ縲�
% 縺｡繧�≧縺ｩ繝ｫ繝灘�菴薙�縺ｮ蜑榊ｾ後〒謾ｹ陦後＠縺溷�ｴ蜷医�
% \result\outorb@outorb@mj@makeruby@pre@list &lt;pre-break_m&gt;
%    \begin{macrocode}
  \outorb@pxrr@ifemptyTF{#1}{%
    \def\outorb@outorb@mj@makeruby@pre@list{}%
  }{%
    \edef\outorb@outorb@mj@makeruby@pre@list{%
      \outorb@outorb@cmd@prebreak
    }%
    \outorb@pxrr@join@list{}{#1}%
    \expandafter\ltx@LocalAppendToMacro
      \expandafter\outorb@outorb@mj@makeruby@pre@list
      \expandafter{%
        \expandafter{\outorb@res}%
    }%
    \outorb@pxrr@join@list{|}{#3}%
    \expandafter\ltx@LocalAppendToMacro
      \expandafter\outorb@outorb@mj@makeruby@pre@list
      \expandafter{%
        \expandafter{\outorb@res}%
    }%
  }%
%    \end{macrocode}
% \result\outorb@outorb@mj@makeruby@post@list &lt;post-break_m&gt;
%    \begin{macrocode}
  \outorb@pxrr@ifemptyTF{#2}{%
    \def\outorb@outorb@mj@makeruby@post@list{}%
  }{%
    \edef\outorb@outorb@mj@makeruby@post@list{%
      \outorb@outorb@cmd@postbreak
    }%
    \outorb@pxrr@join@list{}{#2}%
    \expandafter\ltx@LocalAppendToMacro
      \expandafter\outorb@outorb@mj@makeruby@post@list
      \expandafter{%
        \expandafter{\outorb@res}%
    }%
    \outorb@pxrr@join@list{|}{#4}%
    \expandafter\ltx@LocalAppendToMacro
      \expandafter\outorb@outorb@mj@makeruby@post@list
      \expandafter{%
        \expandafter{\outorb@res}%
    }%
  }%
%    \end{macrocode}
% \par 霑ｽ蜉�縲�
%    \begin{macrocode}
  \expandafter\ltx@LocalAppendToMacro\expandafter\outorb@outorb@disc@list\expandafter{%
    \expandafter{\outorb@outorb@mj@makeruby@pre@list}%
  }%
  \expandafter\ltx@LocalAppendToMacro\expandafter\outorb@outorb@disc@list\expandafter{%
    \expandafter{\outorb@outorb@mj@makeruby@post@list}%
  }%
%    \end{macrocode}
% \par 騾驕ｿ縺励※縺�◆縺ｮ繧呈綾縺吶�
%    \begin{macrocode}
  \let\pxrr@pre\outorb@outorb@mj@makeruby@pre
  \let\pxrr@inter\outorb@outorb@mj@makeruby@inter
  \let\pxrr@post\outorb@outorb@mj@makeruby@post
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@outorb@mj@post}
% &lt;no-break&gt;繧剃ｽ懊ｊ縲―cs{outorb@discretionary}螳溯｡後�
% \inarg1 &lt;body&gt;
% \inarg2 &lt;ruby&gt;
%    \begin{macrocode}
\def\outorb@outorb@mj@post#1#2{%
  \def\outorb@res{%
    \outorb@discretionary
  }%
  \expandafter\ltx@LocalAppendToMacro\expandafter\outorb@res\expandafter{%
    \expandafter{\outorb@outorb@disc@list}%
  }%
  \edef\outorb@outorb@mj@makeruby@nobreak{%
    \outorb@outorb@cmd@nobreak
  }%
  \ltx@LocalAppendToMacro\outorb@outorb@mj@makeruby@nobreak{%
    {#1}{#2}%
  }%
  \expandafter\ltx@LocalAppendToMacro\expandafter\outorb@res\expandafter{%
    \expandafter{\outorb@outorb@mj@makeruby@nobreak}%
  }%
%    \end{macrocode}
% \par \cs{outorb@discretionary}螳溯｡後�
%    \begin{macrocode}
  \def\outorb@disccommand{\noexpand\outoruby}%
  \outorb@res
}
%    \end{macrocode}
%
% \subsubsection{螳滄圀縺ｫ繝ｫ繝薙ｒ邨�∩遶九※繧九さ繝槭Φ繝厭
%
% \begin{macro}{\outorb@outorb@cmd}
% \begin{macro}{\outorb@outorb@cmd@prebreak}
% \begin{macro}{\outorb@outorb@cmd@postbreak}
% \begin{macro}{\outorb@outorb@cmd@nobreak}
% \cs{edef}荳ｭ縺ｧ蜻ｼ縺ｰ繧後ｋ縲�
% \par\noindent\texttt{#1}: &lt;body&gt;�郁｡悟�蜑ｲ菴咲ｽｮ縺ｫ蠢懊§縺ｦ隱ｿ謨ｴ貂医∩��
% \par\noindent\texttt{#2}: &lt;ruby&gt;�郁｡悟�蜑ｲ菴咲ｽｮ縺ｫ蠢懊§縺ｦ隱ｿ謨ｴ貂医∩��
% \par 縺薙ｌ繧剃ｽｿ縺｣縺ｦ螳滄圀縺ｫ繝ｫ繝薙ｒ邨��縲�
%    \begin{macrocode}
\def\outorb@outorb@cmd{\noexpand\outorb@outorb@cmd@jruby}
\def\outorb@outorb@cmd@prebreak{%
  \outorb@outorb@cmd
    \noexpand\outorb@outorb@pre
    {}%
    \outorb@opt@prebreak
}
\def\outorb@outorb@cmd@postbreak{%
  \outorb@outorb@cmd
    {}%
    \noexpand\outorb@outorb@post
    \outorb@opt@postbreak
}
\def\outorb@outorb@cmd@nobreak{%
  \outorb@outorb@cmd
    \noexpand\outorb@outorb@pre
    \noexpand\outorb@outorb@post
    \outorb@opt@nobreak
}
%    \end{macrocode}
% \begin{macro}{\outorb@outorb@cmd@jruby}
% This can't happen蟇ｾ遲悶〒\cs{hbox}縺ｫ蜈･繧後ｋ縲�
%    \begin{macrocode}
\def\outorb@outorb@cmd@jruby#1#2[#3]#4#5{%
  \hbox{%
    #1%
    \outorb@cmd@jruby[#3]{#4}{#5}%
    #2%
  }%
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{蝙ら峩繝｢繝ｼ繝厭
%
% \begin{macro}{\outorb@outorb@cmd@vmode}
% 蝙ら峩繝｢繝ｼ繝峨□縺｣縺溷�ｴ蜷医�螳滄圀縺ｮ繝ｫ繝薙�邨�∩遶九※縲�
%    \begin{macrocode}
\def\outorb@outorb@cmd@vmode{%
  \noexpand\outorb@cmd@jruby\outorb@opt@nobreak
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@cmd@jruby}
% 繝ｫ繝薙ｒ邨��蜃ｦ逅�ｒ謚輔￡繧句多莉､
%    \begin{macrocode}
\def\outorb@cmd@jruby{\jruby}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outorb@outorb@vmode}
% 蝙ら峩繝｢繝ｼ繝峨�蝣ｴ蜷医�
%    \begin{macrocode}
\def\outorb@outorb@vmode{%
  \ltx@LocToksA\expandafter{\outorb@opt@pre}%
  \ltx@LocToksB\expandafter{\outorb@opt@post}%
  \edef\outorb@tempa##1##2{%
    \the\ltx@LocToksA
    \outorb@outorb@cmd@vmode{##1}{##2}%
    \the\ltx@LocToksB
  }%
  \expandafter\endgroup\outorb@tempa
}
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{繝励Ο繝ｭ繝ｼ繧ｰ}
%
% \begin{macro}{\outorb@prologue}
% 蝙ら峩繝｢繝ｼ繝峨〒縺ｪ縺��ｴ蜷域怙蛻昴↓螳溯｡後＆繧後ｋ縲�
% 蜑榊�縺ｮ遨ｺ逋ｽ繧帝驕ｿ縺励※&lt;pre-space&gt;縺ｫ謖√▲縺ｦ縺�￥縲�
% 繝壹リ繝ｫ繝�ぅ繧る驕ｿ縺励※陦悟�蜑ｲ縺ｮ蜿ｯ蜷ｦ繧貞愛譁ｭ縺励◆荳翫√％縺薙〒縺ｮ蛻�牡繧堤ｦ∵ｭ｢縺吶ｋ縲�
%    \begin{macrocode}
\def\outorb@prologue{%
  \begingroup
  \rubynousejghost
  \outorb@hyphen@check
%    \end{macrocode}
% \begin{macro}{\outorb@outorb@pre}
% \begin{macro}{\outorb@outorb@post}
% 蜑榊ｾ後�繧ｰ繝ｫ繝ｼ�井ｼｸ邵ｮ縺ｯ縺励↑縺�ｼ峨↑縺ｩ繧貞�繧後※縺翫￥逕ｨ縲�
%    \begin{macrocode}
  \let\outorb@outorb@pre\ltx@empty
  \let\outorb@outorb@post\ltx@empty
  \outorb@bgluepen
%    \end{macrocode}
% \par \cs\outorb@discretionary 縺ｧ謾ｹ陦後☆繧九◆繧√√％縺薙〒謾ｹ陦後＠縺ｦ縺ｯ縺�￠縺ｪ縺��
%    \begin{macrocode}
  \penalty\outorb@MM
%    \end{macrocode}
% \par This can't happen蟇ｾ遲悶�
%    \begin{macrocode}
  \hbox{}\penalty\outorb@MM
}
%    \end{macrocode}
% \begin{macro}{\outorb@bgluepen}
% 繧ｰ繝ｫ繝ｼ縺ｨ繝壹リ繝ｫ繝�ぅ繧帝驕ｿ縲�
% \result\outorb@before@glue 蜑榊�縺ｮ繧ｰ繝ｫ繝ｼ蜷郁ｨ医�
% \result\outorb@before@penalty 蜑榊�縺ｮ繝壹リ繝ｫ繝�ぅ蜷郁ｨ医�
%    \begin{macrocode}
\def\outorb@bgluepen{%
%    \end{macrocode}
% \result\ltx@LocSkipA 繧ｰ繝ｫ繝ｼ�亥�逅�比ｸｭ�峨�
%    \begin{macrocode}
  \ltx@LocSkipA0pt\relax
%    \end{macrocode}
% \result\ltx@LocSkipA 繝壹リ繝ｫ繝�ぅ�亥�逅�比ｸｭ�峨�
%    \begin{macrocode}
  \pxrr@cnta=\ltx@zero
  \outorb@bgluepen@do
  \edef\outorb@before@glue{\the\ltx@LocSkipA}%
  \edef\outorb@before@penalty{\the\pxrr@cnta}%
}
%    \end{macrocode}
% 繧ｰ繝ｫ繝ｼ縺ｨ繝壹リ繝ｫ繝�ぅ縺後≠繧矩俣縺昴ｌ繧帝驕ｿ縺励※蜑企勁縺吶ｋ縲�
%    \begin{macrocode}
\pxrr@ifprimitive\lastnodetype{% e-TeX
  \def\outorb@bgluepen@do{%
%    \end{macrocode}
% \begin{flushleft}
%   \begin{tabular}{lll}
%     \multicolumn{3}{c}{lastnodetype} \\
%     \toprule
%     11 &amp; glue \\
%     12 &amp; kern &amp; 蟇ｾ蜃ｦ縺励↑縺� \\
%     13 &amp; penalty \\
%     \bottomrule
%   \end{tabular}
% \end{flushleft}
%    \begin{macrocode}
    \ifnum\lastnodetype=11
      \advance\ltx@LocSkipA\lastskip
      \unskip
      \expandafter\outorb@bgluepen@do
    \else\ifnum\lastnodetype=13
      \advance\pxrr@cnta\lastpenalty
      \unpenalty
      \expandafter\expandafter\expandafter\outorb@bgluepen@do
    \fi\fi
  }%
}{% non e-TeX
  \def\outorb@bgluepen@do{%
    \outorb@bgluepen@remove
    \outorb@bgluepen@remove
    \outorb@bgluepen@remove
    \ifnum\lastskip=\ltx@zero\else
      \expandafter\outorb@bgluepen@do
    \else\ifnum\lastpenalty=\ltx@zero\else
      \expandafter\expandafter\expandafter\outorb@bgluepen@do
    \fi\fi
  }%
}
%    \end{macrocode}
% \par 0縺倥ｃ縺ｪ縺��ｴ蜷医□縺題ｿｽ蜉�縲ゅ←縺｣縺｡縺ｫ縺励ｍ蜑企勁縺吶ｋ縺ｮ縺ｧ諢丞袖縺ｯ迚ｹ縺ｫ縺ｪ縺�ｈ縺�↑縲�
%    \begin{macrocode}
\def\outorb@bgluepen@remove{%
  \ifnum\lastskip=\ltx@zero\else
    \advance\ltx@LocSkipA\lastskip
  \fi
  \unskip
  \ifnum\lastpenalty=\ltx@zero\else
    \advance\pxrr@cnta\lastpenalty
  \fi
  \unpenalty
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{繧ｨ繝斐Ο繝ｼ繧ｰ}
%
% \begin{macro}{\outorb@epilogue}
% 邨ゆｺ�凾縺ｮ蜃ｦ逅��
%    \begin{macrocode}
\def\outorb@epilogue{%
%    \end{macrocode}
% \par \cs\outorb@discretionary 縺ｧ謾ｹ陦後☆繧九◆繧√√％縺薙〒謾ｹ陦後＠縺ｦ縺ｯ縺�￠縺ｪ縺��
%    \begin{macrocode}
  \penalty\outorb@MM
%    \end{macrocode}
% \par This can't happen蟇ｾ遲悶�
%    \begin{macrocode}
  \hbox{}\penalty\outorb@MM
%    \end{macrocode}
% \par 縺薙�蠕後↓繝ｦ繝ｼ繧ｶ縺後�繝翫Ν繝�ぅ繧�げ繝ｫ繝ｼ繧堤ｽｮ縺�◆蝣ｴ蜷医―cs\outorb@discretionary 縺ｮ逶ｴ蠕後〒謾ｹ陦後′逋ｺ逕溘＠蠕励ｋ縺ｮ縺ｧ縺ｾ縺壹＞縺薙→縺ｫ縺ｪ繧九�
% 繝壹リ繝ｫ繝�ぅ縺ｯ辟｡逅�□縺代←遨ｺ逋ｽ縺ｯ縺ｪ繧九∋縺冗┌隕悶☆繧九ｈ縺�↓縺吶ｋ縲�
%    \begin{macrocode}
  \endgroup
  \pxrr@inhibitglue
  \ignorespaces
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsection{繝上う繝輔ロ繝ｼ繧ｷ繝ｧ繝ｳ繝壹リ繝ｫ繝�ぅ}
%
% \begin{macro}{\outorb@hyphen@check}
% 蜷Ыcs{outoruby}縺ｧ繝上う繝輔ロ繝ｼ繧ｷ繝ｧ繝ｳ繝壹リ繝ｫ繝�ぅ繧偵メ繧ｧ繝�け縺吶ｋ縲�
%    \begin{macrocode}
\def\outorb@hyphen@check{%
%    \end{macrocode}
% \par 縺薙�蛟､縺ｯ隕∵､懆ｨ弱�
%    \begin{macrocode}
  \ifnum\hyphenpenalty&gt;\outorb@iM
    \outorb@hyphen@warn@nobreak
%    \end{macrocode}
% \par 縺薙�蛟､繧ゅ�
%    \begin{macrocode}
  \else\ifnum\hyphenpenalty&gt;100
    \outorb@hyphen@warn@maynotbreak
  \fi\fi
}
%    \end{macrocode}
% \begin{macro}{\outorb@hyphen@warn@nobreak}
% \begin{macro}{\outorb@warn@maynotbreak}
% 繝上う繝輔ロ繝ｼ繧ｷ繝ｧ繝ｳ繝壹リ繝ｫ繝�ぅ縺悟､ｧ縺阪＞蝣ｴ蜷医↓荳蠎ｦ縺�縺題ｭｦ蜻翫ｒ蜃ｺ縺吶�
%    \begin{macrocode}
\def\outorb@hyphen@warn@nobreak{%
  \global\let\outorb@hyphen@warn@nobreak\relax
  \outorb@warn{%
    The \string\hyphenpenalty\ltx@space value \the\hyphenpenalty\ltx@space too large.\MessageBreak
    \string\outoruby will not break.\MessageBreak
    Using \string\outorubyhyphenbreakable\ltx@space may help it improve%
  }%
}
\def\outorb@hyphen@warn@maynotbreak{%
  \global\let\outorb@hyphen@warn@maynotbreak\relax
  \outorb@warn{%
    The \string\hyphenpenalty\ltx@space value \the\hyphenpenalty\ltx@space too large.\MessageBreak
    \string\outoruby may not break.\MessageBreak
    Using \string\outorubyhyphenbreakable\ltx@space may help it improve%
  }%
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\outorubyhyphenbreakable}
% \begin{macro}{\outorb@outorubyhyphenbreakable}
% \@cs\outorubyhyphenbreakable[&lt;n&gt;]
% \par &lt;n&gt;縺ｯ繝上う繝輔ロ繝ｼ繧ｷ繝ｧ繝ｳ縺ｧ縺ｮ蛻�牡縺ｮ縺励↓縺上＆縲�
% 0縺�縺ｨ繝壹リ繝ｫ繝�ぅ0縺ｧ縲�4縺�縺ｨ譛蟆城剞��9999�峨�
% 縺溘□縺励ｈ繧雁､ｧ縺阪＞蛟､縺ｫ繝壹リ繝ｫ繝�ぅ繧呈峩譁ｰ縺吶ｋ縺薙→縺ｯ縺ｪ縺��
% \par 縺ｩ繧薙↑蛟､縺ｫ縺吶∋縺阪°縺ｯ繧医￥繧上°繧峨↑縺��
%    \begin{macrocode}
\outorb@errifdefined\outorubyhyphenbreakable
\outorb@protected\def\outorubyhyphenbreakable{
  \ltx@ifnextchar[{\outorb@hyphenbreakable}{\outorb@hyphenbreakable[0]}%
}
\let\outorb@outorubyhyphenbreakable\outorubyhyphenbreakable
%    \end{macrocode}
% \begin{flushleft}
%   \begin{minipage}{0.5\textwidth}\centering
%     \begin{tabular}{ll}
%       \multicolumn{2}{c}{kernel} \\
%       \toprule
%       \cs\hyphenpenalty &amp; 50 \\
%       \cs\doublehyphendemerits &amp; 10000 \\
%       \cs\finalhyphendemerits &amp; 5000 \\
%       \cs\linepenalty &amp; 10 \\
%       \bottomrule
%     \end{tabular}^^A
%   \end{minipage}\nobreak
%   \begin{minipage}{0.5\textwidth}\centering
%     \begin{tabular}{ll}
%       \multicolumn{2}{c}{\cls{classes}} \\
%       \toprule
%       \cs\@lowpenalty &amp; 51 \\
%       \cs\@medpenalty &amp; 151 \\
%       \cs\@highpenalty &amp; 301 \\
%       \bottomrule
%     \end{tabular}^^A
%   \end{minipage}\\[\bigskipamount]
%   \begin{minipage}{0.5\textwidth}\centering
%     \begin{tabular}{ll}
%       \multicolumn{2}{c}{\file{kinsoku.tex}} \\
%       \toprule
%       蟆乗嶌縺ｮ縺九↑ &amp; 150 \\
%       \bottomrule
%     \end{tabular}^^A
%   \end{minipage}\nobreak
%   \begin{minipage}{0.5\textwidth}\centering
%     \begin{tabular}{ll}
%       \multicolumn{2}{c}{\pLaTeX\ kernel} \\
%       \toprule
%       \cs\jcharwidowpenalty &amp; 500 \\
%       \bottomrule
%     \end{tabular}^^A
%   \end{minipage}
% \end{flushleft}
%    \begin{macrocode}
\def\outorb@hyphenbreakable[#1]{%
  \outorb@hyphenpenalty@min\hyphenpenalty{\outorb@getpen{#1}}%
  \outorb@hyphenpenalty@min\doublehyphendemerits{\outorb@getpen{#1}}%
  \outorb@hyphenpenalty@min\finalhyphendemerits{\outorb@getpen{#1}}%
}
%    \end{macrocode}
% \par 繧医ｊ蟆上＆縺上↑繧句�ｴ蜷医□縺代�繝翫Ν繝�ぅ繧呈峩譁ｰ縲�
%    \begin{macrocode}
\def\outorb@hyphenpenalty@min#1#2{%
  \ifnum#1&gt;#2\relax
    #1=#2\relax
  \fi
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \subsection{\pkg{hyperref}蟇ｾ遲凡
%
% \begin{macro}{\outorb@exp@opt}
% 螳悟�螻暮幕蜿ｯ閭ｽ縺ｫ繧ｪ繝励す繝ｧ繝ｳ驛ｨ蛻�ｒ蜿門ｾ励☆繧九�
% \begin{Verbatim}
%   \outoruby[][][\hspace{0.25\zw}][{\hspace{0.25\zw}}]{髮ｪ}{繧ｹ繝弱�}
% \end{Verbatim}
% 縺ｮ繧医≧縺ｪ蠑墓焚繧定��縺吶ｋ蠢�ｦ√�
% \par 蠢��亥ｼ墓焚縺ｫ縺ｯ\A{}繧剃ｽｿ逕ｨ縺励※縺�ｋ縺薙→繧貞燕謠舌→縺励※縺�ｋ縲�
% 縺ｾ縺歃verb+{+莉･螟悶�繧ｫ繝�ざ繝ｪ繧ｳ繝ｼ繝�1縺ｮ譁�ｭ励�諠ｳ螳壹＠縺ｦ縺翫ｉ縺壹√げ繝ｫ繝ｼ繝励′螟悶ｌ繧区＄繧後′縺ゅｋ縲�
% \inarg1 &lt;邯咏ｶ�&gt;
% \par &lt;邯咏ｶ�&gt;\A{&lt;繧ｪ繝励す繝ｧ繝ｳ驛ｨ蛻�&gt;}縺ｮ蠖｢縺ｧ貂｡縺輔ｌ繧九�&lt;繧ｪ繝励す繝ｧ繝ｳ驛ｨ蛻�&gt;縺ｫ縺ｯ\A[]蜷ｫ繧縲�
%    \begin{macrocode}
\def\outorb@exp@opt#1#2#{%
  \outorb@exp@opt@loop{#1}{}#2[\outorb@nil}
\def\outorb@exp@opt@loop#1#2#3[#4\outorb@nil{%
%    \end{macrocode}
% \par \verb+#2#{+縺ｧ蜿門ｾ励＠縺溘�縺ｧ縲√％縺ｮ繝代ち繝ｼ繝ｳ繝槭ャ繝√〒譛螟暴A{}縺悟､悶ｌ繧句ｿ��縺ｯ縺ｪ縺��
%    \begin{macrocode}
  \ltx@ifempty{#4}{%
%    \end{macrocode}
% \par \verb+[+蜷ｫ縺ｾ繧後※縺ｪ縺��ｴ蜷医�邨ゆｺ��
%    \begin{macrocode}
    #1{#2#3}%
  }{%
    \outorb@exp@opt@chop@open{#1}{#2#3[}#4\outorb@nil
  }%
}
\def\outorb@exp@opt@chop@open#1#2#3[\outorb@nil{%
  \outorb@exp@opt@bracket{#1}{#2}#3]\outorb@nil
}
%    \end{macrocode}
% \par \verb+[+縺後≠縺｣縺溘�縺ｧ\verb+]+縺後≠繧九°隱ｿ縺ｹ繧九�
%    \begin{macrocode}
\def\outorb@exp@opt@bracket#1#2#3]#4\outorb@nil{%
  \ltx@ifempty{#4}{%
%    \end{macrocode}
% \par \verb+]+雜ｳ繧翫↑縺��
% \A[]荳ｭ縺ｫ\A{}縺後≠縺｣縺溘→縺�≧縺薙→縺ｪ縺ｮ縺ｧ縺昴ｌ繧定��縺励※\verb+]+縺ｾ縺ｧ蜿悶▲縺ｦ縺上ｋ縲�
% 縺薙％縺�縺第怙螟暴A{}縺悟､悶ｌ縺ｪ縺�ｈ縺���縺吶ｋ蠢�ｦ√≠繧翫�
%    \begin{macrocode}
    \outorb@exp@opt@brace{#1}{#2#3}.%
  }{%
    \outorb@exp@opt@chop@close{#1}{#2#3]}#4\outorb@nil
  }%
}
\def\outorb@exp@opt@brace#1#2#3]{%
  \expandafter\outorb@exp@opt@brace@next\expandafter{\ltx@gobble #3]}{#1}{#2}%
}
\def\outorb@exp@opt@brace@next#1#2#3#4#{%
  \outorb@exp@opt@loop{#2}{#3#1}#4[\outorb@nil
}
\def\outorb@exp@opt@chop@close#1#2#3]\outorb@nil{%
  \outorb@exp@opt@loop{#1}{#2}#3[\outorb@nil
}
%    \end{macrocode}
% \end{macro}
% \par \pkg{hyperref}荳ｭ縺ｧ菴ｿ繧上ｌ縺溷�ｴ蜷医�隕ｪ譁�ｭ励�縺ｿ蜃ｺ蜉帙�
% \par \cs{ltx@GlobalAppendToMacro}遲峨�繝槭け繝ｭ縺梧悴螳夂ｾｩ縺ｮ蝣ｴ蜷育ｩｺ縺ｧ蛻晄悄蛹悶☆繧九�
%    \begin{macrocode}
\ltx@GlobalAppendToMacro\pdfstringdefPreHook{%
  \def\outoruby{%
    \outorb@exp@opt\ltx@secondofthree
  }%
  \let\outorb@outoruby\outoruby
}
%    \end{macrocode}
%    \begin{macrocode}
%&lt;/pkg&gt;
%    \end{macrocode}
%
% \Finale
%
% \catcode`\#=6
% \setlength\marginparwidth{10\zw}
% \begin{fullwidth}
%
% \section{髢狗匱}
%
% 縺薙�繝代ャ繧ｱ繝ｼ繧ｸ縺ｯ\href{https://www.gnu.org/licenses/gpl-3.0.html}{GNU General Public License Version 3}縺ｧ驟榊ｸ�＆繧後ｋ縲�
%
% 繝ｪ繝昴ず繝医Μ縺ｯ
% \begin{quote}
%   \url{https://codeberg.org/kkotsi/outoruby}
% \end{quote}
% 縺ｧ縺ゅｋ縲ゅヰ繧ｰ蝣ｱ蜻翫↑縺ｩ縺ｯ縺薙■繧峨↓騾｣邨｡縺輔ｌ縺溘＞縲�
%
% \raggedcolumns
% \renewcommand\indexname{繧､繝ｳ繝�ャ繧ｯ繧ｹ}
% \IndexPrologue{\section{\indexname}}
% \PrintIndex
% \setcounter{GlossaryColumns}{3}
% \renewcommand\glossaryname{譖ｴ譁ｰ螻･豁ｴ}
% \GlossaryPrologue{\section{\glossaryname}}
% \PrintChanges
% \end{fullwidth}
%
</pre></body></html>