编写重写规则 (phonrule)

编写重写规则 (phonrule)

我正在尝试重新创建这个重写规则:

在此处输入图片描述

使用修改后的版本phonrule(看排版语言重写规则),我得到这个:

在此处输入图片描述

这里有几个问题,我对同时提出几个问题持谨慎态度,但由于每个问题都可以独立于其他问题解决,所以我现在会全部问。

  1. 我怎样才能获得一个更大的斜线,使它或多或少与紧随其后的斜线的大小成比例?
  2. 如何才能获得与括号内最大项目成比例的大括号?
  3. 我如何复制最终矩阵的内容,例如居中V,但-round-low左对齐?
  4. 如何让下标 0 位于矩阵的底部?

数学家协会

\documentclass{article}

\providecommand*{\textrightarrow}{\ensuremath{\rightarrow}}
\providecommand*{\textminus}{\ensuremath{-}}
\newcommand*{\phold}{\rule[-1.5pt]{1em}{.5pt}}
\newcommand*{\phon}[2]{#1 \textrightarrow{} #2}
\newcommand*{\phonl}[3]{\phon{#1}{#2}~/~#3\phold}

% set environment for feature matrix with square brackets
\newcommand*{\phonfeatc}[1]{% features are centered
  \ensuremath{%
    \left[\begin{tabular}{@{}c@{}}#1\end{tabular}\right]%
  }}

\begin{document}
\phonl{\phonfeatc{V\\ +back}}{[$\alpha$back]}{{\phonfeatc{V\\ $\alpha$back}} (C$_{0}$\phonfeatc{V\\ \textminus\,round\\ \textminus\,low}$_{0}$ C$_{0}$)$_{0}$ \# X}
\end{document}

答案1

修改后的答案

这不是我的专业,但在 OP 评论之后,我了解到这些括号内的表达式如果是单个V或则居中顶行C(否则左对齐),并且后续行(任意数量)都是左对齐的。如果是这样,那么我认为这种方法比我原来的答案更一致。

其中,没有单独的\phonefeatc{}\phonfeatcl{}{},而只有\phonfeat{}{},其中第一个参数是顶部,如果V或则居中C,否则左对齐,第二个参数是所有其余的左对齐限定符。为了处理任意数量的行,我将嵌套堆栈放在中\vcenter{\hbox{...}}

\documentclass{article}
\usepackage{scalerel,stackengine,amsmath}
\strutlongstacks{T}
\setstackEOL{\\}
\newcommand*{\phold}{\rule[-1.5pt]{1em}{.5pt}}
\newcommand*{\phon}[2]{#1 \rightarrow{} #2}
\newcommand*{\phonl}[3]{\phon{#1}{#2}\stretchrel{~/~}{#3}\phold}
\newcommand*{\phonfeat}[2]{%
  \left[
  \def\stacktype{L}
  \ifx V#1\def\stackalignment{c}\else
    \ifx C#1\def\stackalignment{c}\else
      \def\stackalignment{l}
    \fi
  \fi
  \vcenter{\hbox{\stackon{\Longunderstack[l]{#2}}{#1}}}\right]}
\begin{document}
$\phonl{\phonfeat{V}{+back}}{[\alpha\text{back}]}{\phonfeat{V}{$\alpha$back} 
  \left(\text{C}_0\phonfeat{V}{$-$\,round\\ $-$\,low}_0 \text{C}_0\right)_{\!\!0} \# X
}$\bigskip

$\phonl{\phonfeat{V}{+back}}{[\alpha\text{back}]}{\phonfeat{V}{$\alpha$back} 
  \left(\text{C}_0\phonfeat{V}{$-$\,round\\ $-$\,low\\$-$\,xxx}_0 \text{C}_0\right)_{\!\!0} \# X
}$
\end{document}

在此处输入图片描述

原始答案

我对堆栈做了一些调整。它现在也在数学模式下运行,尽管和的参数\phonfeatc仍然\phonefeatcl在文本模式下处理。

  1. 为了获得放大的斜线,我使用了\stretchrel,它垂直拉伸其第一个参数(此处)以匹配其第二个参数(此处为)~/~的垂直占用空间。#3\phonl

  2. 通过转换要在数学模式下处理的宏,我可以\left(...\right)直接使用,将括号增加到适当的大小。

  3. 为了获得 3 级向量的正确对齐,我采用了宏形式的嵌套堆栈\phonfeatcl,其中底部 2 行左对齐\Longunderstack,顶部行堆叠在其顶部并居中。

  4. 因为处理是在数学模式下进行的,所以下标将正确地附加到它们之前的垂直底边上。

妇女权利委员会:

\documentclass{article}
\usepackage{scalerel,stackengine,amsmath}
\strutlongstacks{T}
\setstackEOL{\\}
\newcommand*{\phold}{\rule[-1.5pt]{1em}{.5pt}}
\newcommand*{\phon}[2]{#1 \rightarrow{} #2}
\newcommand*{\phonl}[3]{\phon{#1}{#2}\stretchrel{~/~}{#3}\phold}
\newcommand*{\phonfeatc}[1]{% features are centered
  \left[\Centerstack{#1}\right]}
\newcommand*{\phonfeatcl}[2]{% features are centered
  \left[\def\stacktype{L}\stackon{\Longunderstack[l]{#2}}{#1}\right]}
\begin{document}
$\phonl{\phonfeatc{V\\ +back}}{[\alpha\text{back}]}{\phonfeatc{V\\ $\alpha$back} 
  \left(\text{C}_0\phonfeatcl{V}{$-$\,round\\ $-$\,low}_0 \text{C}_0\right)_{\!\!0} \# X
}$
\end{document}

在此处输入图片描述

相关内容