如何使用 OTtablx-extras 在 tableau 中添加多个输入?

如何使用 OTtablx-extras 在 tableau 中添加多个输入?

我想制作一个具有多个与此类似的输入的最优理论表(来自这里):
多输入 Tableau 示例
到目前为止,我一直在使用这个包OTtablx 附加功能制作我的 tableaux,但只能使用单个输入。现在我想要多个输入,我对这个包的了解还不够,无法让它工作,而且我找不到手册或任何示例。但我确实认为它提供了我在 OTmultitableau 环境中所需要的东西。有没有人更了解这个包,也许可以为我提供一个我可以使用的示例?或者给我指出正在使用的包的一些实例?
谢谢。
编辑:
确实存在一个手册奥塔布利克斯,其中 OTtablx-extras 是一个分支,但该包不包含多个输入选项。据我所知,手册没有解决我的问题。根据
要求,这是我的代码。但请注意,我不知道自己在做什么。我正在使用 XeLaTeX 进行编译。
单个输入:

\documentclass[a4paper]{article}
\usepackage{OTtablx-extras}

\begin{document}
\begin{OTtableau}{3}
        \OTsolids{1}\OTdashes{2}
        \OTtoprow[/test/]{x,y,z}
        \OTcandrow {a} {*,*,*}
        \OTcandrow [\OThand] {b} {,,}
\end{OTtableau}
\end{document}

结果:
单输入 Tableau
很简单。
我尝试了多种输入(更像是在黑暗中摸索):

\documentclass[a4paper]{article}
\usepackage{OTtablx-extras}

\begin{document}
\begin{OTmultitableau}{3}
        \OTsolids{1}\OTdashes{2}
        \OTmtoprow[/test a/]{x,y,z}
        \OTmcandrow {a} {*,*,*}
        \OTmcandrow [\OThand] {b} {,,}
        \OTmtoprow[/test b/]{x,y,z}
        \OTmcandrow {a} {*,*,*}
        \OTmcandrow [\OThand] {b} {,,}
\end{OTmultitableau}
\end{document}

结果:
多次输入尝试
现在,这看起来比我昨天尝试的要好得多,但仍然是错误的。奇怪的是,我没有收到任何错误消息。
其他尝试包括以下两个:

\documentclass[a4paper]{article}
\usepackage{OTtablx-extras}

\begin{document}
\begin{OTmultitableau}{3} %using the "normal" commands for a single input first
        \OTsolids{1}\OTdashes{2}
        \OTtoprow[/test a/]{x,y,z}
        \OTcandrow {a} {*,*,*}
        \OTcandrow [\OThand] {b} {,,}
        \OTmtoprow[/test b/]{x,y,z}
        \OTmcandrow {a} {*,*,*}
        \OTmcandrow [\OThand] {b} {,,}
\end{OTmultitableau}
\begin{OTmultitableau}{3}
        \OTsolids{1}\OTdashes{2}
        \OTmtoprow[/test a/]{x,y,z}
        \OTmcandrow {a} {*,*,*}
        \OTmcandrow [\OThand] {b} {,,}
        \OTmtoprow[/test b/] %{x,y,z} removing an argument
        \OTmcandrow {a} {*,*,*}
        \OTmcandrow [\OThand] {b} {,,}
\end{OTmultitableau}
\end{document}

结果:
多次输入更多失败尝试
这些看起来比我的“好”尝试还要糟糕,主要是因为对代码的更改没有多大意义。
我开始怀疑这个包是否应该做我在这里尝试的事情。

答案1

这是一个使用 plain 的解决方案OTtablx,它比衍生包的代码更新。我们定义一个\OTmcandrow命令,它与命令相同\OTcandrow,只是它不会产生枚举候选。然后,您可以构建多输入表,而无需特殊环境,因为您只需根据需要散布\OTcandrow\OTmcandrow命令即可。这是您引用的论文中的示例表。由于线条的绘制方式OTtablx,很难从枚举候选中删除垂直线,所以我无法准确地重现表格。

\documentclass{article}
\usepackage{OTtablx}
\makeatletter
\newcounter{OTx@candcount}
\renewcommand {\OTx@candrow} [3][\OTx@candmarker]
    {&\stepcounter{OTx@candidate}\stepcounter{OTx@candcount}\theOTx@candidate&#1~ 
     \OTx@candrowbasic{#2}{#3}}
\renewcommand {\OTx@candrowstar} [3][\OTx@candmarker]
    {&#1~ &\stepcounter{OTx@candidate}\stepcounter{OTx@candcount}\theOTx@candidate
     \OTx@candrowbasic{#2}{#3}}    
\renewcommand{\OTx@candrowbasic} [2]
    {&\OTx@textipa{#1}&\setcounter{OTx@xx}{1}
     \@for \xx :=#2 \do%
         {\expandafter\OTx@amp\xx\expandafter\OTx@amp\stepcounter{OTx@xx} }\\[-1.5ex]%
     \pnode{L\arabic{OTx@candcount}}&&&&\pnode{BD}%
     \setcounter {OTx@xx} {1}
     \whiledo
         {\value{OTx@xx} < \value{OTx@constraints}}
         {\expandafter\OTx@amp\expandafter\OTx@amp\pnode{B\arabic{OTx@xx}}
          \stepcounter{OTx@xx} }&
     &\pnode{R\arabic{OTx@candcount}}\\}
\renewcommand {\OTx@draw@rowsep}
    {\setcounter{OTx@xx}{1}%
    \whiledo {\value{OTx@xx} < \value{OTx@candcount}}
        {\psline[style=OTx@normal@style](L\arabic{OTx@xx})(R\arabic{OTx@xx})%
            \stepcounter{OTx@xx}}
}
\renewenvironment {OTtableau} [2][]                      %
    {\newcommand {\OTtoprow}                           % define \OTtoprow(*)
         {\@ifstar {\OTx@toprowstar}  {\OTx@toprow}}%  %
     \newcommand {\OTcandrow}                          % define \OTcandrow(*)
         {\@ifstar {\OTx@candrowstar} {\OTx@candrow}}% %
     \newcommand {\OTmcandrow}                          
         {\@ifstar {\OTx@mcandrowstar} {\OTx@mcandrow}}
     \SpecialCoor                                      % allow nodes as coordinates
     \gdef\OTx@draw@solids{}%                          % reset solids
     \gdef\OTx@draw@dashes{}%                          % reset dashes
     \gdef\OTx@draw@jagged{}%                          % reset jagged
     \setcounter {OTx@constraints} {#2}%               %
     \setcounter {OTx@specialcols} {2*#2 + 3}%         % special constraint columns
     \OTx@localoptions{#1}%                            % process tableau options
     \begin{tabular} [t] {@{}                          %
         p{0pt}                                        % left node column
         @{\hspace{0.5em}}r@{}r@{}l                    % label/marker/candidate column
         @{\hspace{0.5em}}p{\OTx@dblmid@lw}            % double separator column
         *{#2}                                         % special columns
         {@{\hspace{0.5em}}c@{\hspace{0.5em}}          %     constraint column
         p{0pt}}                                       %     constraint node column
         @{}}\\[-4.75ex]                               %
     \pnode{TL}&&&&\pnode{TD}&                         % top left and double nodes
     \setcounter {OTx@xx} {1}                          %
     \whiledo                                          %
         {\theOTx@xx < #2}                             %
         {\OTx@amp\pnode{T\theOTx@xx}\OTx@amp          % top constraint nodes
          \stepcounter{OTx@xx} }                       %
        &\pnode{TR}\\}                                 % top right node
                                                       %%%%% ENDING OF OTtableau
    {\rput(L\arabic{OTx@candcount}){\pnode{BL}}        % bottom left node
     \rput(R\arabic{OTx@candcount}){\pnode{BR}}\\[-3ex]% bottom right node
     \end{tabular}%                                    %
     \OTx@draw@rowsep%                                 % row separators
     \OTx@draw@solids%                                 % solid separators
     \OTx@draw@dashes%                                 % dashed separators
     \OTx@draw@double%                                 % double separators
     \ifthenelse {\boolean{OTx@closed}}                % closed/no border
         {\OTx@draw@dblmid%                            %     double middles
          \ifthenelse {\boolean{OTx@border}}           %
              {\OTx@draw@border}                       %     closed border
              {}}                                      %
         {\OTx@draw@border\OTx@draw@dblmid}%           % open border
     \OTx@draw@jagged}                                 % jagged separators

     
\newcommand {\OTx@mcandrow} [3][\OTx@candmarker]
    {&\stepcounter{OTx@candcount}&#1~ 
     \OTx@candrowbasic{#2}{#3}}
\newcommand {\OTx@mcandrowstar} [3][\OTx@candmarker]
    {&#1~ &\stepcounter{OTx@candcount}
     \OTx@mcandrowbasic{#2}{#3}}     

\makeatother
\begin{document}
\begin{OTtableau}{5}
        \OTsolids{2,3,4,5}\OTdashes{1}
        \OTtoprow{Agree,ID preson voi,ID-wf voi,IDvoi,*voi}
        \OTcandrow {/pigds/}{,,,,}
        \OTmcandrow {pigds} {!*,,,**}
        \OTmcandrow {pigdz} {,,*!,*,***}
        \OTmcandrow[\OThand] {pikts} {,,,**,}
        \OTcandrow {/pigts/}{,,,,}
        \OTmcandrow {pigts}{*!,,,,*}
        \OTmcandrow[\OThand]{pikts}{,,,*,}
        \OTcandrow{/pigtz/}{,,,,}
        \OTmcandrow[\OThand]{pigdz}{,,,**,***}
        \OTmcandrow{piktz}{*!,,,,}
        \OTmcandrow{pigts}{,,!*,*,}
\end{OTtableau}
\end{document}

代码输出

答案2

这是实现相同目标的另一种方法,但使用ot-tableau大多数发行版都包含的软件包。一般方法是相同的:软件包定义了一个\mcand命令,该命令生成没有编号的候选。要删除枚举候选行的垂直线,请使用带星号的命令版本\vio来制作没有垂直线的单元格。[这是基于此答案的早期版本,现已包含在软件包中]。

\documentclass[a4paper]{article}
\usepackage{ot-tableau}
\makeatletter

\LetterBeforeFinger
\usepackage{tipa}
\begin{document}
\LetterBeforeFinger
\begin{tableau}{c:c|c|c|c}
\inp{}        \const{Agree} \const{ID preson voi} \const{ID-wf voi} \const{IDvoi}\const{*voi}
\cand{\ips{pigds}} \vio*{}  \vio*{}     \vio*{} \vio*{} \vio{}
\mcand{pigds}   \vio{!*}    \vio{}      \vio{}  \vio{}  \vio{**}
\mcand{pigdz}    \vio{}     \vio{}      \vio{*!}    \vio{*} \vio{***}
\mcand[\Optimal]{pikts}    \vio{}       \vio{}      \vio{}  \vio{**}    \vio{}
\cand{\ips{pigts}}            \vio*{}       \vio*{}     \vio*{} \vio*{} \vio{}
\mcand{pigts}                   \vio{*!}    \vio{}      \vio{}  \vio{}  \vio{*}
\mcand[\Optimal]{pikts}    \vio{}       \vio{}      \vio{}  \vio{*} \vio{}
\mcand{pigdz}              \vio{}       \vio{}  \vio{!*}    \vio{**}    \vio{***}
\cand{\ips{pigtz}}            \vio*{}   \vio*{}     \vio*{} \vio*{} \vio{}  
\mcand[\Optimal]{pigdz}            \vio{}       \vio{}      \vio{} \vio{**} \vio{***}
\mcand{piktz}    \vio{*!}       \vio{}      \vio{} \vio{}   \vio{}
\mcand{pigts}     \vio{}        \vio{}  \vio{!*}    \vio{*} \vio{}
\end{tableau}
\end{document}

代码输出

相关内容