这个问题源于这里的问题/答案其中一个答案提到如何使用该phonrule
包创建音位规则。
MWE 在这里:
\documentclass[a4paper,12pt,twoside,onecolumn]{memoir}
\usepackage{phonrule}
\begin{document}
\phon{x}{\oneof{
\envr{w}{z} \\
\envl{v}{\phonfeat{
+feature x \\
-feature y}}}}
\end{document}
结果是:
您可以看到输出和环境都居中了。有什么方法可以取消它们的居中和/或左对齐吗?居中功能似乎是 v1.2.0 中的故意添加的phonrule
。但文档中没有其他关于对齐的内容。
我需要它是标准的左对齐版本 - 即左对齐输出和左对齐环境。类似这样(具体间距可灵活调整):
尝试添加任何类型的对齐通常都会破坏phonrule
环境,并且无法编译或者它对齐整个图形/示例,而不仅仅是单个(输出+环境)部分。
我一直使用与上述问题中利用的另一个答案大致相同的方法\mbox
。这很好,但是添加其他输出和环境要么很混乱,要么需要根据差异使用新命令。 phonrule
通常以更干净、更可扩展的方式完成所有这些操作,这就是为什么我正在研究能够修改对齐方式的原因。
答案1
以下是完整的重新实现phonrule
:
\documentclass{article}
\providecommand*{\textrightarrow}{\ensuremath{\rightarrow}}
\providecommand*{\textplus}{\ensuremath{+}}
\providecommand*{\textminus}{\ensuremath{-}}
\newcommand*{\phold}{\rule[-1.5pt]{1.5ex}{.5pt}}
\newcommand*{\phon}[2]{#1 \textrightarrow{} #2}
\newcommand*{\phonc}[3]{\phon{#1}{#2}~/~#3}
\newcommand*{\phonr}[3]{\phon{#1}{#2}~/~\phold#3}
\newcommand*{\phonl}[3]{\phon{#1}{#2}~/~#3\phold}
\newcommand*{\phonb}[4]{\phonl{#1}{#2}{#3}#4}
\makeatletter
\newcommand*{\env}{\@ifstar{\@env{&}}{\@env{~}}}
\newcommand*{\@env}[3]{#2~/#1#3}
\newcommand*{\envr}{\@ifstar{\@envr{&}}{\@envr{~}}}
\newcommand*{\@envr}[3]{\@env{#1}{#2}{\phold#3}}
\newcommand*{\envl}{\@ifstar{\@envl{&}}{\@envl{~}}}
\newcommand*{\@envl}[3]{\@env{#1}{#2}{#3\phold}}
\newcommand*{\envb}{\@ifstar{\@envb{&}}{\@envb{~}}}
\newcommand*{\@envb}[4]{\@env{#1}{#2}{#3\phold#4}}
% set environment for feature matrix with square brackets
\newcommand*{\phonfeat}[1]{%
\ensuremath{%
\left[\begin{tabular}{c}#1\end{tabular}\right]%
}%
}
\newcommand*{\oneof}[2][c]{%
\ensuremath{%
\left\{
\begin{tabular}{#1#1}#2\end{tabular}
\right.
}%
}
\begin{document}
\phon{x}{\oneof[l]{ \envr*{w}{z} \\
\envl*{v}{\phonfeat{
\textplus feature x \\
\textminus feature y
}}}}
\phon{x}{\oneof[l]{
\envr{w}{z} \\
\envl{v}{\phonfeat{
\textplus feature x \\
\textminus feature y
}}}}
\phon{x}{\oneof{
\envr{w}{z} \\
\envl{v}{\phonfeat{
\textplus feature x \\
\textminus feature y
}}}}
\end{document}
具体变化如下:
该
\oneof
命令接受一个可选参数用于内部对齐,默认c
与原始命令一样;它可以是l
或r
。命令
\env
、\envl
和\envr
具有\envb
* 形式,它&
在 之后插入一个/
而不是默认的~
,因此它们可以在 的参数中使用\oneof
以获得所需的对齐。
在上面的代码中,我使用了所有三种可能性;第一个例子是你正在寻找的,第二个例子只是左对齐,最后一个与原始的一样。
答案2
\oneofl
通过添加行来定义新命令
\newcommand\oneofl[1]{\ensuremath{\left\{\begin{tabular}{l} #1 \end{tabular}\right.}}
到你的序言中(即,在\documentclass
和之间\begin{document}
),并用它来代替\oneof
。然后你可以通过下面的代码获得以下输出。
\documentclass{article}
\usepackage{phonrule}
\newcommand\oneofl[1]{\ensuremath{\left\{\begin{tabular}{l} #1 \end{tabular}\right.}}
\begin{document}
\phon{x}{\oneofl{
\envr{w}{z} \\
\envl{v}{\phonfeat{
+feature x \\
-feature y}}}}
\end{document}