
AVM을 조판하고 싶습니다. 동료가 다음 코드를 작성했는데 꽤 잘 작동합니다. 그러나 괄호에는 약간의 문제가 있습니다. 그 중 일부는 제대로 정렬되지 않았습니다. 예를 들어 두 번째 닫는 괄호가 너무 낮습니다.
이것이 코드입니다. \ms는 유형(이탤릭체로 설정)이 선택적 인수로 제공되는지 여부를 확인합니다.
\documentclass{article}
\usepackage{array}
\setlength{\extrarowheight}{1pt}
\def\ms{\futurelet\msLook\msdecide}
\def\msdecide{\ifx\msLook[\let\next=\xxtms%
\else\let\next=\xxms\fi\next}
%
\def\xxtms[#1]#2{%
\mbox{%
\tabcolsep0pt\arraycolsep0pt%
$%
\left[%
\begin{tabular}{>{\upshape\scshape}l@{\hspace{5pt}}>{\normalfont\itshape}l}%
#2%
\multicolumn{2}{>{\normalfont\itshape}l}{#1}%
\end{tabular}%
\right]%
$%
}%
\vspace{1mm}%
}
\def\xxms#1{%
\mbox{%
\tabcolsep0pt\arraycolsep0pt%
$%
\left[%
\begin{tabular}{>{\upshape\scshape}l@{\hspace{5pt}}>{\normalfont\itshape}l}%
#1%
\end{tabular}%
\rule{0mm}{5mm}%
\right]%
$%
}%
\vspace{1mm}%
}
\begin{document}
\ms[word]{
syntax-semantics & \ldots \ms[local]{ category & \ms[category]{ head & \ms[noun]{ case & 1\\
}\\[6mm]
subcat & Det[\textsc{case}~1] \\
} \\[6mm]
content & \ldots \ms[grammatik]{ inst & X \\
}\\
}\\
}
\end{document}
편집하다:
다음과 같은 경우에는 문제가 있는 것 같습니다.
\ms{
synsem$|$loc$|$cat \ms{ head & \ms[verb]{vform & fin
}\\
subcat & \ldots\\
}
}
출력은 다음과 같습니다.
문제는 가장 오른쪽에 있는 두 괄호 사이에 공간이 너무 많다는 것입니다.
답변1
구분 기호가 항상 배열을 덮도록 \delimiterfactor=1000
및 를 설정하는 것이 좋습니다 .\delimitershortfall=0pt
\ms
코드 중복을 피하기 위해 코드를 변경했습니다 . 또한 \ms
with 에 대한 논쟁을 끝내는 것이 필요하지 않습니다(지금은 잘못되었습니다) \\
.
\documentclass{article}
\usepackage{array}
\setlength{\extrarowheight}{1pt}
\makeatletter
\newcommand{\ms}[2][]{%
\mbox{%
\delimiterfactor=1000 \delimitershortfall=0pt
\tabcolsep=0pt
$\left[%
\begin{tabular}{>{\upshape\scshape}l@{\hspace{5pt}}>{\normalfont\itshape}l}
#2%
\if\relax\detokenize{#1}\relax\else
\\ \multicolumn{2}{>{\normalfont\itshape}l}{#1}%
\fi
\end{tabular}%
\right]$%
}%
\vspace{1mm}%
}
\begin{document}
\ms[word]{
syntax-semantics & \ldots
\ms[local]{
category &
\ms[category]{
head & \ms[noun]{ case & 1 }
\\[6mm]
subcat & Det \ms{ case & 1 }
}
\\[6mm]
content & \ldots \ms[grammatik]{ inst & X }
}
}
\end{document}
한 행 개체에 문제가 있습니다 \ms
(표시하기 위해 하나만 남겨두었습니다). \ms
이 경우 솔루션은 사용되지 않지만 대괄호에는 \textup[
및를 사용해야 합니다.\textup]