% \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 \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% % \makeatletter % \CheckSum{1407} % % \iffalse %<*ins> \ifx\documentclass\undefined \input docstrip \askforoverwritetrue \AddGenerationDate \preamble \endpreamble \generate{% \file{outoruby.sty}{\from{outoruby.dtx}{pkg}}% } \expandafter\endbatchfile \fi %</ins> % %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{outoruby.dtx} %</driver> % \fi % % \@nameuse{@@sourcepart}\iffalse % % 残念ãªãŒã‚‰\LaTeX é™å®šã€‚ % \begin{macrocode} %<pkg>\NeedsTeXFormat{LaTeX2e} %<pkg>\ProvidesPackage{outoruby} %<*pkg|driver> [2025/03/14 v0.0.1 ] %</pkg|driver> % \end{macrocode} % % \@nameuse{@@sourcepart}\fi % \@nameuse{@@sourcepartend} % % \iffalse %<*driver> \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}{<->ssub*hmc/bx/n}{} \DeclareFontShape{JT2}{hmc}{b}{n}{<->ssub*hmc/bx/n}{} \DeclareFontShape{JY2}{hgt}{b}{n}{<->ssub*hgt/bx/n}{} \DeclareFontShape{JT2}{hgt}{b}{n}{<->ssub*hgt/bx/n}{} % 太å—ã¯ã‚´ã‚·ãƒƒã‚¯ \DeclareFontShape{JY2}{hmc}{bx}{n}{<->ssub*hgt/bx/n}{} \DeclareFontShape{JT2}{hmc}{bx}{n}{<->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} %</driver> % \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>\@tempdimb % ^^A\fontfamily{lmtt}\fontseries{lc}\selectfont % \settowidth\@tempdima{#1}^^A % \ifdim\@tempdima>\@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`\<=\active % \newcommand\@@it{^^A % \fontfamily{ntxlf}\def\ntx@scaled{s*[1]}\selectfont} % \protected\def<#1>{{\eghostguarded{^^A % \@@it % \(\langle\)\null\textit{\met@#1_{}\@nil}\null\(\rangle\)}}} % \DeclareRobustCommand*\meta[1]{<#1>} % \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<{\string<}^^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>\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[<>]{æä¾›}{ã¦ã„|ãょã†}ã™ã‚‹ã€‚ % \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}パッケージ)\<}^^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 \& 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[<j|]{超超超超超弩級}{ã¡ã‚‡ã†|ã¡ã‚‡ã†|ã¡ã‚‡ã†|ã¡ã‚‡ã†|ã¡ã‚‡ã†|ã©|ãã‚…ã†}雪ã ã‚‹ã¾ã€‚ % \end{Verbatim} % \marginfig{^^A % ã‚れã¯\outoruby[<j|]{超超超超超弩級}{ã¡ã‚‡ã†|ã¡ã‚‡ã†|ã¡ã‚‡ã†|ã¡ã‚‡ã†|ã¡ã‚‡ã†|ã©|ãã‚…ã†}雪ã ã‚‹ã¾ã€‚ % } % % \oarg[\string<j|]ã®æ„味ã¯\pxrbpkg ã®\cs{jruby}ã¨åŒã˜ã€‚ % % \emph{æ£ã—ã„出力を得るã«ã¯è¤‡æ•°å›žã®å‡¦ç†ãŒå¿…è¦}ã§ã‚ã‚‹ã“ã¨ã«æ³¨æ„。 % % \subsection{命令} % % \desccs\outoruby[<option_1>][<option_2>][<pre-space>][<post-space>]{<body>}{<ruby>} % % <option_1>ã€<option_2>ã€<body>ã€<ruby>ã¯\pxrbpkg ã§ã®\@cs\jruby[<option>]{<body>}{<ruby>}ã«å¯¾å¿œã™ã‚‹ã€‚ % <option>ã«å¯¾å¿œã™ã‚‹ã‚‚ã®ãŒ2ã¤ã‚ã‚‹ãŒã€ã“れã¯ãれãžã‚Œæ¬¡ã®ã‚ˆã†ã«ä½¿ã‚れる: % % \begin{center} % \begin{tabular}{lccc} % \toprule % ルビ形 & å‰é€²å…¥è¨å®š & 後進入è¨å®š & ä»–ã®è¨å®š \\ \midrule % 行ä¸å½¢ & <option_1>ã®å‰é€²å…¥è¨å®š & <option_1>ã®å¾Œé€²å…¥è¨å®š & <option_1> \\ % 行é å½¢ & <option_{\emph{2}}>ã®å‰é€²å…¥è¨å®š & <option_1>ã®å¾Œé€²å…¥è¨å®š & <option_1> \\ % 行末形 & <option_1>ã®å‰é€²å…¥è¨å®š & <option_{\emph{2}}>ã®å¾Œé€²å…¥è¨å®š & <option_1> \\ % \bottomrule % \end{tabular} % \end{center} % % ã¤ã¾ã‚Šã€<option_2>ã®å‰é€²å…¥è¨å®šã€å¾Œé€²å…¥è¨å®šä»¥å¤–ã¯ç„¡è¦–ã•れる。 % % <pre-space>ã¯ãƒ«ãƒ“ã®å‰ã«ç½®ã‹ã‚Œã‚‹è¡Œåˆ†å‰²ã«ã‚ˆã£ã¦æ¶ˆãˆã‚‹ç©ºç™½ã€ % <post-space>ã¯ãƒ«ãƒ“ã®å¾Œã«ç½®ã‹ã‚Œã‚‹è¡Œåˆ†å‰²ã«ã‚ˆã£ã¦æ¶ˆãˆã‚‹ç©ºç™½ã§ã‚る。 % 詳ã—ãã¯\ref{sec:prepost}節をå‚照。 % % 別åã¯å®šç¾©ã—ãªã„。必è¦ã§ã‚れã°è‡ªåˆ†ã§ãƒ—リアンブル㧠% \begin{Verbatim} % \newcommand\ruby{\outoruby} % \end{Verbatim} % ã®ã‚ˆã†ã«ã™ã‚‹ã“ã¨ã€‚ % % \desccs*\outorb@outoruby % \cs{outoruby}ã¨ç‰ä¾¡ã€‚ % % \medskip % % \desccs\outorubysetup{<option_2>} % % \cs{outoruby}ã®<option_2>ã®æ—¢å®šå€¤ã‚’è¨å®šã™ã‚‹ã€‚ % ç¾åœ¨ã§ã¯ãƒ‘ッケージèªã¿è¾¼ã¿æ™‚ã«\verb+||-||+ãŒæŒ‡å®šã•れるãŒã€\emph{ã“ã®åˆæœŸå€¤ã¯ä»Šå¾Œã®\pxrbpkg ã®æ›´æ–°ã«ã‚ˆã‚Šå¤‰æ›´ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹}。 % åˆæœŸå€¤ã‚’変更ã™ã‚‹å ´åˆã§ã‚‚ã€åˆæœŸè¨å®šã§è‡ªå‹•ã§å½¢ãŒåˆ‡ã‚Šæ›¿ã‚る点ã¯å¤‰æ›´ã—ãªã„予定ã§ã‚る。 % \ref{sec:noprot}ç¯€ã®æ³¨æ„ã‚‚å‚照。 % % 自動ã§è¡Œé å½¢ï¼è¡Œæœ«å½¢ã«ãªã‚‹ã®ã¯ã“ã®æ—¢å®šå€¤ã®ãŸã‚ã§ã‚りã€ãŸã¨ãˆã°\verb+|-|+ã«å¤‰æ›´ã™ã‚‹ã¨ã€è¡Œåˆ†å‰²ã—ãŸã¨ã—ã¦ã‚‚自動ã§å½¢ãŒåˆ‡ã‚Šæ›¿ã‚らãªããªã‚‹\footnote{^^A % ã¤ã¾ã‚Šå…ˆã®è¡¨ã§ã€Œè¡Œé å½¢ã€ã¨ã—ã¦ã„ãŸã¨ã“ã‚ã¯æ£ã—ãã¯ã€Œè¡Œåˆ†å‰²ãŒç™ºç”Ÿã—ãŸå ´åˆã®ã€è¡Œåˆ†å‰²å¾Œã®è¡Œé ã®ãƒ«ãƒ“ã®å½¢ã€ã¨ã„ã†æ„味ã§ã‚る。「行ä¸å½¢ã€ã€ã€Œè¡Œæœ«å½¢ã€ã«ã¤ã„ã¦ã‚‚åŒã˜ã€‚ % }。 % % ã“ã®å‘½ä»¤ã«ã‚ˆã‚‹è¨å®šã¯ç´¯ç©ã™ã‚‹ã€‚ã™ãªã‚ã¡ã€\verb+\outorubysetup{-}+ã¨ã—ã¦ã‚‚è¨å®šã¯\verb+||-||+ã®ã¾ã¾ã§ã‚る。 % 値を更新ã—ãŸã‘れã°\verb+\outorubysetup{<->}+ã®ã‚ˆã†ã«æ˜Žç¤ºçš„ã«å€¤ã‚’指定ã™ã‚‹å¿…è¦ãŒã‚る。 % ãªãŠã€é€²å…¥ã‚’許å¯ã™ã‚‹è¨å®šã¯ãƒ«ãƒ“ãŒè¡Œåˆ†å‰²ä½ç½®ã§ç‰ˆé¢å¤–ã¸ã¯ã¿å‡ºã‚‹ã“ã¨ã‚’æ„味ã™ã‚‹ã®ã§ã€\verb+||-||+ã¨\verb+|-|+以外ã®è¨å®šã‚’è¡Œã†æ©Ÿä¼šã¯ãªã„ã ã‚ã†ã€‚ % % \LaTeX ã®ã‚°ãƒ«ãƒ¼ãƒ—内ã§ä½¿ã£ãŸå ´åˆã€è¨å®šã¯ã‚°ãƒ«ãƒ¼ãƒ—外ã«ã¯åæ˜ ã•れãªã„。 % % \desccs*\outorb@outorubysetup % \cs{outorubysetup}ã¨ç‰ä¾¡ã€‚ % % \medskip % % \desccs\outorubyhyphenbreakable[<i>] % % \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}を実行ã™ã‚‹ã“ã¨ã§ã€ã“ã®è¨å®šãŒæ”¹å–„ã§ãã‚‹ã‹ã‚‚ã—れãªã„。 % <i>ã¯åˆ†å‰²ã®ã—ã‚„ã™ã•ã§ã€\cs{nolinebreak}ãªã©ã¨åŒã˜æŒ‡å®šã§ã‚る。 % ã™ãªã‚ã¡ã€\texttt0ã‚„\texttt1ãªã©å°ã•ã‚ã®æ•°å—を指定ã™ã‚‹ã¨\cs{outoruby}ä¸ã§ã®è¡Œåˆ†å‰²ãŒèµ·ãã‚„ã™ããªã‚‹ã€‚ãŸã ã—ã€åŒæ™‚ã«ãƒã‚¤ãƒ•ãƒãƒ¼ã‚·ãƒ§ãƒ³ã‚‚発生ã—ã‚„ã™ããªã‚‹ã®ã§æ³¨æ„ã•れãŸã„。 % çœç•¥æ™‚ã¯\texttt0ãŒæŒ‡å®šã•ã‚ŒãŸæ‰±ã„ã«ãªã‚‹ã€‚ % \emph{å®Ÿè¡Œæ™‚ã®æŒ™å‹•ã®è©³ç´°ã¯ã¾ã£ãŸã固ã¾ã£ã¦ãªã„。} % % \desccs*\outorb@outorubyhyphenbreakable % \cs{outorubyhyphenbreakable}ã¨ç‰ä¾¡ã€‚ % % \medskip % % \desccs\outorb@discretionary{\\\ttindent\texlevel % \A{<pre-break_1>}\A{<post-break_1>}\\\ttindent % \A{<pre-break_2>}\A{<post-break_2>}\\\ttindent % \texttt\vdots\\\ttindent % \A{<pre-break_n>}\A{<post-break_n>}\\ % }{<no-break>} % % \smallskip % % æ°—æŒã¡çš„ã«ã¯æ¬¡ã¨ç‰ä¾¡ï¼š % % \noindent % \@cs\discretionary{<pre-break_1>}{<post-break_1>}{\ttend1 % \@cs\discretionary{<pre-break_2>}{<post-break_2>}{\ttend1 % \texttt\vdots\\\@@ttend2 % \@cs\discretionary{<pre-break_n>}{<post-break_n>}{<no-break>}\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}ã¯<option_2>ã®æŒ‡å®šã«åŸºã¥ã„ã¦ãƒ«ãƒ“ã¨è¦ªæ–‡å—ã®é•·ã•ã®å·®ã‚’考慮ã›ãšã«ã€ä¸€å¾‹ã§ã™ã¹ã¦ã®è¡Œåˆ†å‰²ãŒç™ºç”Ÿã™ã‚‹ãƒ«ãƒ“ã«å¯¾ã—çªå‡ºç¦æ¢ã‚’指定ã™ã‚‹ã€‚ % ãã®ãŸã‚ã€ã“ã®æŒ™å‹•ãŒå•題ã«ãªã‚‹ã€‚ % % ã“れã«é–¢ã™ã‚‹\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 % \<「真ã«ã€çªå‡ºã‚’ç¦æ¢ã™ã‚‹ã‚ªãƒ—ション\eghostguarded{\texttt{|\string<-}}ã¨\eghostguarded{\texttt{->|}}ã‚’è¿½åŠ ã™ã‚Œã°ã‚ˆã„ã‚“ã˜ã‚ƒãªã‹ã‚ã†ã‹ã€‚ % } % \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}ã®<option_1>ã®æ—¢å®šå€¤ã‚’別ã«è¨å®šã§ãるよã†ã«ã™ã¹ããªæ°—ã‚‚ã™ã‚‹ãŒã€ã¨ã‚Šã‚ãˆãšä»¥ä¸‹ã®ã‚ˆã†ã«ã™ã‚Œã°ã‚ˆã„ã ã‚ã†ï¼š % \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}ã¯ãŸã¨ãˆ<pre-break_n>を空ã«ã—ãŸã¨ã—ã¦ã‚‚ã€å¸¸ã«\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`\<=12 \marginfig{\raggedleft % \fboxsep2\p@ % \hspace*{-1\zw}^^A % \mbox{\fbox{\parbox<t>{9\zw}{^^A % \baselineskip1.5\zw % 最後ã®çš‡å¸ã§ã‚らã›ã‚‰ã‚Œã¾ã™æ„›æ–°è¦šç¾…\hspace{1\zw}溥儀様 % }}\hskip-\fboxrule % \fbox{\parbox<t>{9\zw}{^^A % \baselineskip1.5\zw % 最後ã®çš‡å¸ã§ã‚らã›ã‚‰ã‚Œã¾ã™\outoruby{愛新覚羅}{ã‚ã„|ã—ã‚“|ã‹|ãら}\hspace{1\zw}溥儀様 % }}}^^A % }}\marginpar{\vskip7pt} % % ã‚‚ã—も行分割ã«ã‚ˆã£ã¦æ¶ˆæ»…ã™ã‚‹ç©ºç™½ãŒå‰å¾Œã«å¿…è¦ã§ã‚ã‚‹å ´åˆã¯\cs{outoruby}ã®<pre-space>ã€<post-space>ã§\cs{hspace}を用ã„れã°ã‚ˆã„\footnote{^^A % ãã®ç©ºç™½ãŒå’Œæ¬§æ–‡é–“空白ã§ã‚ã‚‹å ´åˆã¯\pxrbpkg ã®è£œåŠ©è¨å®š\eghostguarded{\texttt:}ãŒä½¿ãˆã‚‹ã€‚ % }: % \begin{Verbatim} % 最後ã®çš‡å¸ã§ã‚らã›ã‚‰ã‚Œã¾ã™\outoruby[][][][\hspace{1\zw}]{愛新覚羅}{ã‚ã„|ã—ã‚“|ã‹|ãら}溥儀様 % \end{Verbatim} % % {\catcode`\<=12 \marginfig{\raggedleft % \fboxsep2\p@ % \fbox{\parbox<t>{9\zw}{^^A % \baselineskip1.5\zw % 最後ã®çš‡å¸ã§ã‚らã›ã‚‰ã‚Œã¾ã™\outoruby[][][][\hspace{1\zw}]{愛新覚羅}{ã‚ã„|ã—ã‚“|ã‹|ãら}溥儀様 % }}}} % % ãªãŠã€ã“ã®ä¾‹ã§ã€Œ\outoruby{溥儀}{ãµ|ãŽ}ã€ã«ã¾ã§ãƒ«ãƒ“ã‚’ãµã‚‹ã¨ã€\cs{hspace}ã‚’<post-space>ã«ç§»å‹•ã—ãŸã“ã¨ã§é€£ç¶šã—ãŸãƒ«ãƒ“ã«ãªã£ã¦ã¾ãšã„(\ref{sec:dblruby}節å‚照)。 % % \paragraph{柔軟ã•} % % \cs{outoruby}ã®ä¸ã§ã¯ã‚°ãƒ«ãƒ¼ãŒä¼¸ç¸®ã—ãªã„。 % よã£ã¦\pxrbpkg ã®è¨å®šã«ã‚ˆã‚‹å’Œæ¬§æ–‡é–“空白や<pre-space>ã€<post-space>ã«å…¥ã‚Œã‚‰ã‚ŒãŸç©ºç™½ã¯ä¼¸ã³ç¸®ã¿ã—ãªããªã‚‹ã€‚ % åŠ ãˆã¦ã€ãƒ«ãƒ“ã®é–“ãŠã‚ˆã³å‰å¾Œã§ã®è¡Œåˆ†å‰²ã®èµ·ãã‚„ã™ã•ã¯åŒã˜æ®µè½ã®ã™ã¹ã¦ã®\cs{outoruby}(ãŠã‚ˆã³ãƒã‚¤ãƒ•ãƒãƒ¼ã‚·ãƒ§ãƒ³ï¼‰ã§ä¸€å¾‹ã§ã‚り〠% å€‹åˆ¥ã«æŒ‡å®šã™ã‚‹ã“ã¨ã¯ã§ããªã„。 % % \paragraph[This can't happen (disc<n>).]{\textexlevel This can't happen (disc<n>).} % % 対ç–ã—ãŸã‹ã‚‰å¤šåˆ†å¤§ä¸ˆå¤«â€¦â€¦ã€‚(\href{https://okumuralab.org/tex/mod/forum/discuss.php?d=416}{関連}) % % \needspace{6\baselineskip} % \section{例} % % \begingroup \catcode`\<=12 % \begin{VerbatimOut}[commandchars=/()]{\jobname.tmp} % \rubysetup{<j>}\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<\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>\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} %<*pkg> % \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 <n> % \begin{flushleft} % \begin{tabular}{ll} % \multicolumn{2}{c}{\cs{@getpen}} \\ % \toprule % <n> & value \\ \midrule % 0 & \cs\z@ \\ % 1 & \cs\@lowpenalty \\ % 2 & \cs\@medpenalty \\ % 3 & \cs\@highpenalty \\ % else & \cs\@M \\ \bottomrule % \end{tabular} % \end{flushleft} % \begin{macrocode} \def\outorb@getpen#1{% \ifnum#1>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{<pre-break_1>}{<post-break_1>}{<pre-break_2>}{<post-break_2>}\ldots}{<no-break>} % % \begin{Verbatim} % \discretionary{}{好ã\kern-2\zw}{}% % \discretionary{嫌}{ã„\kern-2\zw}{}% % \discretionary{好ã}{}{普通}% % \end{Verbatim} % ã¨ã„ã†discretionaryã®ä¸¦ã³ãŒã‚ã£ãŸã¨ãã€ã‚‚ã—も「普通ã€ãŒå…¥ã‚‹ä½™è£•ãŒè¡Œå†…ã«ã‚ã‚‹ã®ã§ã‚れã°ã™ã¹ã¦ã®discretionaryã§<no-break>ãŒé¸æŠžã•れる。 % % ã‚‚ã—も「普通ã€ãŒå…¥ã‚Šåˆ‡ã‚‰ãªã„ã®ã§ã‚れã°ã€ã©ã“ã‹ã®discretionaryã§åˆ†å‰²ãŒç™ºç”Ÿã™ã‚‹ã€‚ã“ã®ã¨ã最後ã®discretionaryã§ã¯<no-break>ãŒé¸æŠžã•れãŸã¨ã—ã¦ã‚‚ã€ãã®å‰ã®discretionaryã§<post-break>ã«ä»•込んã è² ã®kernã«ã‚ˆã£ã¦ãã®å¹…ã¯æ‰“ã¡æ¶ˆã•れる。 % ã—ãŸãŒã£ã¦<post-break>ãŒè¡Œé•·ã‚ˆã‚Šå分ã«çŸã‘ã‚Œã°æ”¹è¡Œã¯1箇所ã§ã—ã‹ç™ºç”Ÿã—ãªã„。 % % % \begin{macrocode} \outorb@protected\def\outorb@discretionary#1#2{% \begingroup % \end{macrocode} % \par <no-break>ã®å¹…ãŒå¿…è¦ãªã®ã§å–得。 % #1ä¸ã§ã‚¹ã‚¯ãƒ©ãƒƒãƒãƒ¬ã‚¸ã‚¹ã‚¿ã‚’使ã£ã¦ã‚‹ã‹ã‚‚ã—れãªã„ã®ã§ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªãƒ¬ã‚¸ã‚¹ã‚¿ã€‚ % \begin{macrocode} \setbox\outorb@disc@box=\hbox{#2}% \ltx@ifblank{#1}{% % \end{macrocode} % \inarg1 \<(空) % \par \cs\discretionary ã«ã—ãªã„。 % \begin{macrocode} \unhbox\outorb@disc@box \endgroup }{% % \end{macrocode} % \inarg1{<pre-break_1>}{<post-break_1>}\ldots\c@@arg{<pre-break_n>}{<post-break_n>} % \begin{macrocode} \expandafter\expandafter\expandafter\pxrr@decompose\expandafter\expandafter\expandafter{% \ltx@zapspace{#1}% }% % \end{macrocode} % \result\pxrr@res\pxrr@pre{{<pre-break_1>}}\pxrr@inter{{<post-break_1>}}\ldots\pxrr@inter{{<post-break_n>}}\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<pre-break_n> % \inarg2\pxrr@inter % \inarg3<post-break_n> % \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} % <post-break>ã®å ´åˆã€‚ % \begin{macrocode} \def\outorb@disc@break@post{% \hbox{\outorb@aux@write{% % \end{macrocode} % \par 分割ã—ãŸã“ã¨ã‚’記録。次回<no-break>を出力ã—ãªã„。 % \begin{macrocode} \string\outorb@disc@break@aux{\the\outorb@disc@count}{\outorb@thepage}{\the\inputlineno}% {\outorb@disccommand}% % \end{macrocode} % \par \cs{csname}トリックã§åˆ†å‰²ã‚’記録ã—ã€è¤‡æ•°ç®‡æ‰€ã§ã®åˆ†å‰²ã‚’検出。 % <post-break_n>ã¨<pre-break_{n+1}>ã¯è¤‡æ•°å›žè¡Œåˆ†å‰²ã—ã¦ã‚‚å¿…ãšåŒã˜è¡Œã€ã¤ã¾ã‚ŠåŒã˜\cs{shipout}ä¸ã«ã‚る。 % é‡è¤‡æ¤œå‡ºã¯<pre-break>ã§ã€‚ % \begin{macrocode} \noexpand\outorb@disc@break@record{\the\outorb@disc@count}% }}% % \end{macrocode} % \par <no-break>ã®è² ã®å¹…ã®ã‚«ãƒ¼ãƒ³ã€‚ % \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 <pre-break>ã®å ´åˆã€‚ % ã“れãŒã‚ã‚‹ã®ã§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 完全展開å¯èƒ½ãªã‚¨ãƒ©ãƒ¼ã€‚expl3ã®\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 <no-break>ã®å ´åˆã€‚ % 確実ã«\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}分割ã—ãŸã‹ã€‚ % <no-break>ã‚’æç”»ã™ã‚‹ã‹ä»£ã‚りã«åŒã˜å¹…ã®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{<X_1>}\pxrr@inter{<X_2>}\ldots\pxrr@inter{<X_n>}\pxrr@post % \result\outorb@res \pxrr@pre{<X_n>}\ldots\pxrr@inter{<X_2>}\pxrr@inter{<X_1>}\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{<X_1>}\pxrr@inter{<X_2>}\ldots\pxrr@inter{<X_n>}\pxrr@post % \result\outorb@res % \pxrr@pre{\pxrr@post}\ttend1 % \pxrr@inter{\pxrr@pre{<X_1>}\pxrr@post}\ttend1 % \pxrr@inter{\pxrr@pre{<X_1>}\pxrr@inter{<X_2>}\pxrr@post}\ttend1 % \texttt\vdots\\\ttindent % \pxrr@inter{\pxrr@pre{<X_1>}\pxrr@inter{<X_2>}\ldots\pxrr@inter{<X_n>}\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{<X_1>}\pxrr@inter{<X_2>}\ldots\pxrr@inter{<X_n>}\pxrr@post % \result\outorb@res % \pxrr@pre{\pxrr@post}\ttend1 % \pxrr@inter{\pxrr@pre{<X_1>}\pxrr@post}\ttend1 % \pxrr@inter{\pxrr@pre{<X_2>}\pxrr@inter{<X_1>}\pxrr@post}\ttend1 % \texttt\vdots\\\ttindent % \pxrr@inter{\pxrr@pre{<X_n>}\ldots\pxrr@inter{<X_2>}\pxrr@inter{<X_1>}\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{<X_1>}\pxrr@inter{<X_2>}\ldots\pxrr@inter{<X_n>}\pxrr@post % \result\outorb@res % \pxrr@pre\\\@@ttend2 % \A{\pxrr@post}\ttend2 % \A{\pxrr@pre{<X_1>}\pxrr@inter{<X_2>}\ldots\pxrr@inter{<X_n>}\pxrr@post}\ttend1 % \pxrr@inter\\\@@ttend2 % \A{\pxrr@pre{<X_1>}\pxrr@post}\ttend2 % \A{\pxrr@pre{<X_2>}\ldots\pxrr@inter{<X_n>}\pxrr@post}\ttend1 % \vdots\\\ttindent % \pxrr@inter\\\@@ttend2 % \A{\pxrr@pre{<X_1>}\pxrr@inter{<X_2>}\ldots\pxrr@inter{<X_n>}\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 <|> % \inarg2 \pxrr@pre{<X_1>}\pxrr@inter{<X_2>}\ldots\pxrr@inter{<X_n>}\pxrr@post % \result\outorb@res % <X_1><|><X_2><|>\ldots <|><X_n> % \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{<X_1>}{<Y_1>}\pxrr@inter{<X_2>}{<Y_2>}\ldots\pxrr@inter{<X_n>}{<Y_n>}\pxrr@post % \result\outorb@res % \pxrr@pre{{<X_1>}{<Y_1>}}\pxrr@inter{{<X_2>}{<Y_2>}}\ldots\pxrr@inter{{<X_n>}{<Y_n>}}\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}ã®<option>ã«ç›¸å½“ã™ã‚‹ã‚‚ã®ï¼ˆ\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 & ç¾åœ¨ã®çŠ¶æ…‹ \\ % \cs\pxrr@po@C@<æ–‡å—> & æ–‡å—クラス \\ % \cs\pxrr@po@TR@<ç¾åœ¨ã®çŠ¶æ…‹>@<æ–‡å—クラス> & é·ç§»å…ˆã®çŠ¶æ…‹ \\ % \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>{\ttfamily}ll<{?}} % \multicolumn{3}{c}{æ–‡å—クラス} \\ % \toprule % F & @ & finish \\ % V & | & vertical \\ % S & :.*! & sub \\ % B & \string<( & befone inter \\ % A & >) & after inter \\ % M & -mgjMJchHPSeEfF & mode \\ % \bottomrule % \end{tabular}^^A % \end{minipage}\nobreak % \begin{minipage}{0.5\textwidth}\centering % \begin{tabular}{cl<{?}l} % \multicolumn{3}{c}{状態} \\ % \toprule % bi & before inter & åˆæœŸå€¤ \\ % bb & before, bar \\ % bs & before, sub \\ % mi & mode \\ % as & after, sub \\ % ai & after, inter \\ % ab & after, bar \\ % fi & finish \\ % \bottomrule % \end{tabular}\par\raggedright\medskip\footnotesize % æ¬¡ã®æŒ‡å®šã‚’ã©ã†è§£é‡ˆã™ã‚‹ã‹ã¨ã„ã†æ„味ã§ã‚る。 % bsãªã‚‰æ¬¡ã«æ¥ã‚‹æŒ‡å®šã¯å‰è£œåŠ©ã‹ãれ以é™ã®ã‚‚ã®ã€‚ % \end{minipage}\\[\bigskipamount] % \begin{minipage}{0.5\textwidth}\centering % \begin{tabular}{clll} % \toprule % æ–‡å—クラス & 状態 & é·ç§»å…ˆ & è¨å®šã®ç¨®é¡ž \\\midrule % V & bi, bb & bb, bs & å‰é€²å…¥ \\ % & \otherwise & ab, fi & 後進入 \\ % S & bi, bb, bs & bs & å‰è£œåŠ© \\ % & \otherwise & as & 後補助 \\ % B & bi, bb & bs & å‰é€²å…¥ \\ % A & & fi & 後進入 \\ % M & & mi & モード \\ % \bottomrule % \end{tabular}^^A % \end{minipage}\nobreak % \begin{minipage}{0.5\textwidth}\centering % \begin{tabular}{cll} % \toprule % é·ç§»å…ˆ & æ–‡å—クラス & è¨å®šã®ç¨®é¡ž \\ \midrule % bi & & å‰é€²å…¥ï¼ˆå˜åœ¨ã›ãšï¼‰ \\ % bb & & å‰é€²å…¥ \\ % bs & S & å‰è£œåŠ© \\ % & \otherwise & å‰é€²å…¥ \\ % mi & & モード \\ % as & & 後補助 \\ % ai & & 後補助(ç¾å˜ã›ãšï¼‰ \\ % ab & & 後進入 \\ % fi & & 後進入 \\ % \bottomrule % \end{tabular}^^A % \end{minipage}% % \end{center} % \result\outorb@po@FS <é·ç§»å…ˆ> % \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} % <option_2>ã®å‰é€²å…¥æŒ‡å®šã®æ—¢å®šå€¤ã€‚ % \begin{macro}{\outorb@setup@aintf} % <option_2>ã®å¾Œé€²å…¥æŒ‡å®šã®æ—¢å®šå€¤ã€‚ % \begin{macro}{\outorubysetup} % \begin{macro}{\outorb@outorubysetup} % #1ã‚’\cs{outoruby}ã®<option_2>ã®æ—¢å®šå€¤ã«ã€‚ % å‰é€²å…¥ã€å¾Œé€²å…¥ä»¥å¤–ã¯ç„¡è¦–ã—ã€ãれãžã‚ŒæŽ’他。 % \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} % <pre-space> % \begin{macro}{\outorb@opt@post} % <post-space> % \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 <option_1> % \inarg4 <option_2> % \inarg6 <pre-space> % \inarg8 <post-space> % \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}[<option_1>][<option_2>][<pre-space>][<post-space>]{<body>}{<ruby>} \\ % <body>: <body_1><body_2>\ldots <body_n> \\ % <ruby>: <ruby_1>\texttt|<ruby_2>\texttt|\ldots \texttt|<ruby_n> % \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 <body> % \inarg2 <ruby> % \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>\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>\outorb@iM \outorb@outorb@bnobrtrue \else \outorb@opt@ifnobreakTF\outorb@opt@parse@bsub{% \outorb@outorb@bnobrtrue }{% \outorb@outorb@bnobrfalse }% \fi % \end{macrocode} % \par å‰å¾Œã«å…¥ã‚Œã‚‹ã‚°ãƒ«ãƒ¼ã€‚ % 補助è¨å®šã«ã‚ˆã‚‹ã‚‚ã®ã¯ã“ã“ã§ã¯ãªãdiscretionaryã®ä¸èº«ã§å…¥ã‚Œã‚‰ã‚Œã‚‹ï¼ˆä¼¸ç¸®ã¯ã—ãªããªã‚‹ï¼‰ã€‚ % \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>\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 <> \outorb@ruby@count)% }% \fi \else % \end{macrocode} % \par <body>ãŒ\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æ–‡å—ã®ãƒ¢ãƒŽãƒ«ãƒ“ã€ç†Ÿèªžãƒ«ãƒ“ã‚’å«ã‚€ãŒå‡¦ç†ã¯åŒã˜ã€‚ % ã“ã®å ´åˆ<ruby>ã‚‚å˜ä¸€ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰ãªã£ã¦ã„ã‚‹ã®ã§ã€çµå±€ãƒ¢ãƒŽãƒ«ãƒ“ã¨åŒã˜å‡¦ç†ãŒä½¿ãˆã‚‹ã€‚ % \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 <> \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{<body_1>}\pxrr@inter{<body_2>}\ldots\pxrr@inter{<body_n>}\pxrr@post % \intl\outorb@boyd@list \pxrr@pre{<ruby_1>}\pxrr@inter{<ruby_2>}\ldots\pxrr@inter{<ruby_n>}\pxrr@post % \par 引数ã¯<no-break>用。\cs{pxrr@post}ã§ä½¿ã‚れる。 % \inarg1 <body> % \inarg2 <ruby> % \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{<body_1>}\pxrr@inter{<body_2>}\ldots\pxrr@inter{<body_n>}\pxrr@post}\ttend1 % }{\ttend2 % {\pxrr@post}\ttend2 % {\pxrr@pre{<ruby_1>}\pxrr@inter{<ruby_2>}\ldots\pxrr@inter{<ruby_n>}\pxrr@post}\ttend1 % }\pxrr@inter{\ttend2 % {\pxrr@pre{<body_1>}\pxrr@post}\ttend2 % {\pxrr@pre{<body_2>}\pxrr@inter{<body_3>}\ldots\pxrr@inter{<body_n>}\pxrr@post}\ttend1 % }{\ttend2 % {\pxrr@pre{<ruby_1>}\pxrr@post}\ttend2 % {\pxrr@pre{<ruby_2>}\pxrr@inter{<ruby_3>}\ldots\pxrr@inter{<ruby_n>}\pxrr@post}\ttend1 % }\ttend1 % \vdots\\\ttindent % \pxrr@inter{\ttend2 % {\pxrr@pre{<body_1>}\pxrr@inter{<body_2>}\ldots\pxrr@inter{<body_n>}\pxrr@post}\ttend2 % {\pxrr@post}\ttend1 % }{\ttend2 % {\pxrr@pre{<ruby_1>}\pxrr@inter{<ruby_2>}\ldots\pxrr@inter{<ruby_n>}\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ã¤ã®<pre-break_m>ã¨<post-break_m>ã®ãƒ‘ターンを作る。 % \cs{ifoutorb@bnobr}ã®å ´åˆ$m=k$ã€ãã†ã§ãªã‘れã°$m=k+1$。 % \inarg1 \pxrr@pre{<body_1>}\pxrr@inter{<body_2>}\ldots \pxrr@inter{<body_k>}\pxrr@post % \inarg2 \pxrr@pre{<body_{k+1}>}\pxrr@inter{<body_{k+2}>}\ldots \pxrr@inter{<body_n>}\pxrr@post % \inarg3 \pxrr@pre{<ruby_1>}\pxrr@inter{<ruby_2>}\ldots \pxrr@inter{<ruby_k>}\pxrr@post % \inarg4 \pxrr@pre{<ruby_{k+1}>}\pxrr@inter{<ruby_{k+2}>}\ldots \pxrr@inter{<ruby_n>}\pxrr@post % \par #1ã¨#3ã‹ã‚‰<pre-break_m>ã€#2ã¨#4ã‹ã‚‰<post-break_m>。 % \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 実行ã›ãš<pre-break_m>ã¾ãŸã¯<post-break_m>も空。 % ã¡ã‚‡ã†ã©ãƒ«ãƒ“全体ã®ã®å‰å¾Œã§æ”¹è¡Œã—ãŸå ´åˆã€‚ % \result\outorb@outorb@mj@makeruby@pre@list <pre-break_m> % \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 <post-break_m> % \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} % <no-break>を作りã€\cs{outorb@discretionary}実行。 % \inarg1 <body> % \inarg2 <ruby> % \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}: <body>(行分割ä½ç½®ã«å¿œã˜ã¦èª¿æ•´æ¸ˆã¿ï¼‰ % \par\noindent\texttt{#2}: <ruby>(行分割ä½ç½®ã«å¿œã˜ã¦èª¿æ•´æ¸ˆã¿ï¼‰ % \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} % 垂直モードã§ãªã„å ´åˆæœ€åˆã«å®Ÿè¡Œã•れる。 % å‰å´ã®ç©ºç™½ã‚’退é¿ã—ã¦<pre-space>ã«æŒã£ã¦ã„ã。 % ペナルティも退é¿ã—ã¦è¡Œåˆ†å‰²ã®å¯å¦ã‚’判æ–ã—ãŸä¸Šã€ã“ã“ã§ã®åˆ†å‰²ã‚’ç¦æ¢ã™ã‚‹ã€‚ % \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 & glue \\ % 12 & kern & 対処ã—ãªã„ \\ % 13 & 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>\outorb@iM \outorb@hyphen@warn@nobreak % \end{macrocode} % \par ã“ã®å€¤ã‚‚。 % \begin{macrocode} \else\ifnum\hyphenpenalty>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[<n>] % \par <n>ã¯ãƒã‚¤ãƒ•ãƒãƒ¼ã‚·ãƒ§ãƒ³ã§ã®åˆ†å‰²ã®ã—ã«ãã•。 % 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 & 50 \\ % \cs\doublehyphendemerits & 10000 \\ % \cs\finalhyphendemerits & 5000 \\ % \cs\linepenalty & 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 & 51 \\ % \cs\@medpenalty & 151 \\ % \cs\@highpenalty & 301 \\ % \bottomrule % \end{tabular}^^A % \end{minipage}\\[\bigskipamount] % \begin{minipage}{0.5\textwidth}\centering % \begin{tabular}{ll} % \multicolumn{2}{c}{\file{kinsoku.tex}} \\ % \toprule % å°æ›¸ã®ã‹ãª & 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 & 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>#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 <継続> % \par <継続>\A{<オプション部分>}ã®å½¢ã§æ¸¡ã•れる。<オプション部分>ã«ã¯\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} %</pkg> % \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} %