我想制作一个具有多个与此类似的输入的最优理论表(来自这里):
到目前为止,我一直在使用这个包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}
\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~
\OTx@candrowbasic{#2}{#3}}
\renewcommand {\OTx@candrowstar} [3][\OTx@candmarker]
{~ &\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}~
\OTx@candrowbasic{#2}{#3}}
\newcommand {\OTx@mcandrowstar} [3][\OTx@candmarker]
{~ &\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}