![字体使用次数改变对齐方式 (gb4e.sty)](https://linux22.com/image/434431/%E5%AD%97%E4%BD%93%E4%BD%BF%E7%94%A8%E6%AC%A1%E6%95%B0%E6%94%B9%E5%8F%98%E5%AF%B9%E9%BD%90%E6%96%B9%E5%BC%8F%20(gb4e.sty).png)
我的标签如下:
\documentclass{book}
%\usepackage{times}
\usepackage{tikz,tikz-qtree, tikz-qtree-compat}
\usepackage{gb4e}%
\begin{document}
\newcommand{\LT}[1]{{\Large #1}}
\newcommand{\TS}[1]{\textsubscript{#1}}
\newcommand{\TSS}[1]{\textsuperscript{#1}}
\newcommand{\erg}{\textsc{erg}}
\newcommand{\BF}[1]{\textbf{#1}}
\newcommand{\wh}{\textsc{wh}}
\newcommand{\SC}[1]{\textsc{#1}}
\newcommand{\BFSC}[1]{\textbf{\textsc{#1}}}
\begin{exe}
\ex \begin{tabular}[t]{@{}l}%\toprule[-18pt]
\label{candytree}
\begin{tikzpicture}[baseline]
\node(a){\LT{[}\TS{CP}~Op\TS{i}~~~...~~\LT{[}\TS{TP}~~{\it t}\TS{i}(\erg)\BF{[\wh]}~~...~~\LT{[}\TS{ApplP}~[\TS{DP(IO)}~~{\it pro}\TS{i}\BF{[\wh]}~~~]~...~\LT{]~]~]}};
\draw[semithick] (-2.8,-.2) -- (-2.8,-.5);
\draw[semithick] (-2.8,-.5) -- (-4.9,-.5);
\draw[semithick,->] (-4.9,-.5) -- (-4.9,-.2);
\draw[thick,->] (-2.8,-.2)..controls +(south:.6) and +(south:.6)..(2.6,-.2);
\node(b) at (4.3,-.5) {\SC{Agree via binding}};
\end{tikzpicture}
\end{tabular}
\end{exe}
\end{document}
它创建如下output
内容:
当我使用字体包时times
,对齐方式变为:
CMR
需要与字体对齐,请告知出了什么问题...
答案1
提供的代码使用绝对坐标定义箭头位置,例如(-2.8,-.5) -- (-4.9,-.5)
。当示例的宽度由于字体不同而改变时,这些坐标也应该改变。
为了使代码更加灵活,您可以使用 tikzlibrary tikzmark
,它允许您在代码中的任何位置添加标记。您可以在 中引用这些标记tikzpicture
。这还允许您使用常规gb4e
语法来创建示例,而不是使用tikz
句子。
例如,在下面的代码中,使用代码cp
为括号 [ CP定义了一个标记\lb{CP}\tikzmark{cp}
,为括号 [ TP定义了另一个标记。完成句子后,使用键添加gb4e
一个。在此 tikzpicture 中,使用先前定义的坐标绘制箭头,基本语法为。需要部分来指定这是一个 tikzmark 坐标。tikzpicture
remember picture, overlay
\draw[->] (pic cs:tp) -- (pic cs:cp)
pic cs:
要微调定位,您可以shift
在参考坐标时使用该选项,例如([shift={(-8pt,-5pt)}]pic cs:tp)
将锚点向下和向左移动。
箭头中的角是通过+(x,y)
在绘制路径中插入一个相对点来创建的,这意味着箭头首先绘制到该点,然后绘制到第二个坐标。这样就创建了第一个角。第二个角是通过使用-|
第二段来实现的。
弯曲箭头由语法制成\draw (a) to (b)
,其中to
关键字允许选项in
并out
指定曲线的角度。
对于 Times 字体来说,newtxtext,newtxmath
它是作为该times
包的现代替代品来使用的。
下面是完整的 MWE。请注意,您可能需要编译两次才能将tikzmark
正确的坐标写入aux
文件。
\documentclass{book}
\usepackage{newtxtext,newtxmath}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\makeatletter
% see https://tex.stackexchange.com/a/364179/
\def\new@fontshape{}
\makeatother
\usepackage{gb4e}
\begin{document}
\begin{exe}
\ex \lb{CP}\tikzmark{cp} Op_i \ldots \lb{TP}\tikzmark{tp} \textit{t}_i(\textsc{erg\textbf{[wh]}} \ldots \lb{ApplP}\lb{DP(IO)} \textit{pro}_i\tikzmark{pro}\textsc{\textbf{[wh]}} ] \ldots ] ] ]
\end{exe}
\begin{tikzpicture}[remember picture,overlay]
\draw[semithick,->] ([shift={(-8pt,-5pt)}]pic cs:tp) -- +(0,-0.3) -| ([shift={(-8pt,-5pt)}]pic cs:cp);
\draw[semithick,->] ([shift={(-8pt,-5pt)}]pic cs:tp) to [out=340,in=200] ([shift={(-8pt,-5pt)}]pic cs:pro) node[below,xshift=10mm] {\textsc{Agree via binding}};
\end{tikzpicture}
\end{document}
结果: