我正在尝试重新创建这个重写规则:
使用修改后的版本phonrule
(看排版语言重写规则),我得到这个:
这里有几个问题,我对同时提出几个问题持谨慎态度,但由于每个问题都可以独立于其他问题解决,所以我现在会全部问。
- 我怎样才能获得一个更大的斜线,使它或多或少与紧随其后的斜线的大小成比例?
- 如何才能获得与括号内最大项目成比例的大括号?
- 我如何复制最终矩阵的内容,例如居中
V
,但-round
和-low
左对齐? - 如何让下标 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
在文本模式下处理。
为了获得放大的斜线,我使用了
\stretchrel
,它垂直拉伸其第一个参数(此处)以匹配其第二个参数(此处为)~/~
的垂直占用空间。#3
\phonl
通过转换要在数学模式下处理的宏,我可以
\left(...\right)
直接使用,将括号增加到适当的大小。为了获得 3 级向量的正确对齐,我采用了宏形式的嵌套堆栈
\phonfeatcl
,其中底部 2 行左对齐\Longunderstack
,顶部行堆叠在其顶部并居中。因为处理是在数学模式下进行的,所以下标将正确地附加到它们之前的垂直底边上。
妇女权利委员会:
\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}