
정렬 목적으로 트리 상단에 공간을 차지하지 않는 팬텀 노드를 생성하여 트리의 첫 번째 레이블이 지정된 노드가 예제 번호와 일치하도록 만들고 싶습니다. 설정 l sep=0pt
만으로는 충분하지 않습니다. 이를 달성하려면 또 무엇을 설정해야 합니까?
MWE:
\documentclass{article}
\usepackage[linguistics]{forest}
\usepackage{expex}
\begin{document}
\ex\begin{forest}
[, phantom
[{Jane is ...}, tier=words]
[AjP
[Specifier
[very, tier=words]
]
[Aj'
[Aj
[fond, tier=words]
]
[PP
[{of Cheetah}, roof, tier=words]
]
]
]
]
\end{forest}\xe
\end{document}
답변1
현재 버전의 forest
. 그러나 현재 버전에서는 baseline
모든 노드에 추가하여 해당 노드를 트리의 기준선으로 만들 수 있습니다.
(관련되지 않은 언어학 설명: "지정자"는 구문 위치의 이름이며 트리의 구문 범주나 노드가 아니며 일반적으로 트리에 나타나지 않아야 합니다.)
\documentclass{article}
\usepackage[linguistics]{forest}
\usepackage{expex}
\begin{document}
\ex
\begin{forest}
[,phantom,
[{Jane is ...}, tier=words]
[AjP,baseline
[Specifier
[very, tier=words]
]
[Aj'
[Aj
[fond, tier=words]
]
[PP
[{of Cheetah}, roof, tier=words]
]
]
]
]
\end{forest}
\xe
\end{document}
답변2
여기에는 루트 가 전혀 필요하지 않습니다 phantom
. 첫 번째 자식의 가장자리를 제거하고 루트의 정렬을 지정하기만 하면 됩니다.
\documentclass{article}
\usepackage[linguistics]{forest}
\usepackage{expex}
\begin{document}
\ex
\begin{forest}
where n children=0{tier=words}{}
[AjP, calign child=2
[Jane is \dots, no edge]
[Specifier
[very]
]
[Aj'
[Aj
[fond]
]
[PP
[of Cheetah, roof]
]
]
]
\end{forest}
\xe
\end{document}
답변3
v2.0.3 이전에 Forest는 TikZ가 그리지 않은 노드 baseline
에서 키가 사용된 경우에도 키가 사용될 때마다 기준 노드(앵커가 기준선에 정렬될 노드)를 설정했습니다 . phantom
이로 인해 TikZ 오류가 발생할 것으로 예상했지만 그렇지 않았습니다.
TikZ에서 노드가 생성되면 그룹 외부에서도 이름이 유지되며(버그로 간주될 수 있음) (0,0)
다음과 같이 "노드"가 에 위치합니다.
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node(foo){};
\end{tikzpicture}
\begin{tikzpicture}
\draw[->] (-1,1) -- (foo.center) -- (1,1);
\end{tikzpicture}
\end{document}
위의 내용을 Forest가 노드 이름을 재사용한다는 사실(루트는 일반적 node@2
으로 기본적으로 이름이 지정됨)과 결합하면 문제가 발생합니다. 기준선 노드를 루트로 설정하고(언어학 라이브러리처럼) 루트 팬텀을 만드는 경우(나란한 트리를 조판하기 위해 일반적으로 수행되는 것처럼) TikZ는 효과적으로 기준선을 y=0
. 결과는 OP 예제로 표시됩니다.
이제 Forest 2.0.3(문제가 draw tree method
수정됨)은 영리해져서 TikZ에게 기준 노드를 팬텀 노드(보다 정확하게는 그려지지 않은 모든 노드)로 설정하도록 지시하는 것을 중단했습니다. 따라서 이 버전부터 병렬 언어 트리에 대한 기준선은 더 이상 설정되지 않습니다. 결과는 TikZ 매뉴얼에서 약속한 대로 다음 예와 같이 "그림의 하단이 주변 텍스트의 기준선에 배치됩니다"입니다. ( draw
정렬을 더 잘 볼 수 있도록 노드는 n입니다 .)
\documentclass{article}
\usepackage[linguistics]{forest}
\usepackage{gb4e}
\begin{document}
\begin{exe}
\ex\begin{forest}
for tree=draw
[,phantom
[VP[V][DP]]
[VP[V][DP]]
]
\end{forest}
\end{exe}
\end{document}
이는 위의 코드를 Forest v2.0.3 - v2.1.4로 컴파일할 때 얻는 결과입니다.
확실히 말하자면, 나는 이것이 예상되는 행동이라고 생각합니다. 그러나 이것이 다음과 같은 의미는 아닙니다.원하는행동 ... 그리고 이것이 v2.1.5의 언어학 라이브러리가 더 똑똑해지려고 노력하는 이유입니다. 대략적으로 말하면 기준선을 "첫 번째 비팬텀 노드"로 설정합니다. 이 예에서는 왼쪽 VP이므로 다음과 같은 결과를 얻습니다.
(임시 설명: Forest 2.1.5는 이미 CTAN에 제출되었으며 다음 사이트에서도 사용 가능합니다.GitHub.)
이제 OP의 예에서는 "첫 번째 비 팬텀 노드"가 로 확인되므로 이 모든 것이 전혀 도움이 되지 않습니다 Jane is ...
. 언어학의 새로운 기본 기본값은 병렬 트리의 일반적인 경우에 적용됩니다. 평범하지 않은 경우에는 baseline
다음의 조언에 따라 수동으로 설정하면 됩니다.앨런의 대답.