我有这样一个句子“पठ् + अ + ति”,我想添加一些注释,如附图所示。有没有这样的软件包,或者我需要使用 Tikz。
任何参考资料或帮助都将不胜感激。
============根据 Gonzolo 给出的解决方案编辑问题 ============ 这是 MWE 和我得到的输出。
\documentclass{article}
\usepackage{fontspec,xltxtra,xunicode}
\usepackage{tikz}
\usetikzlibrary{shapes.callouts}
\setmainfont[Script=Devanagari,AutoFakeBold=3.5]{Sanskrit 2003}
\definecolor{myblue}{RGB}{122,175,234}
\newcommand\tikzmark[1]{%
\tikz[remember picture,overlay]\node (#1) {};}
\newcommand\MyNote[3][]{%
\begin{tikzpicture}[remember picture,overlay]
\node[rectangle callout, fill=myblue,text width=2cm,align=center,font=\sffamily\bfseries\color{white},#1] at #2 {#3};
\end{tikzpicture}%
}
\begin{document}
पठ् \tikzmark{a}\qquad + अ + \tikzmark{b} ति ।
\MyNote[callout relative pointer={(0,1)}]{([yshift=-1.5cm]a)}{क्रिया को धारण करता है वह धातु है ।}
\MyNote[callout relative pointer={(0,1)}]{([yshift=-1.5cm]b)}{"अ \& ति" का कर्ता अर्थ को कह रहा है}
\end{document}
答案1
您可以使用shapes.callouts
TikZ 中的库:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.callouts}
\definecolor{myblue}{RGB}{122,175,234}
\newcommand\tikzmark[1]{%
\tikz[remember picture,overlay]\node (#1) {};}
\newcommand\MyNote[3][]{%
\begin{tikzpicture}[remember picture,overlay]
\node[rectangle callout, fill=myblue,text width=2cm,align=center,font=\sffamily\bfseries\color{white},#1] at #2 {#3};
\end{tikzpicture}%
}
\begin{document}
Some \tikzmark{a}text\qquad Some other\tikzmark{b} text
\MyNote[callout relative pointer={(0,1)}]{([yshift=-1.5cm]a)}{some note for the first text}
\MyNote[callout relative pointer={(0,1)}]{([yshift=-1.5cm]b)}{some note for the second text}
\end{document}
有关详细信息,请参阅第节48.7 标注形状在 PGF 手册中。
对于Sanskrit 2003
使用的字体,必须从字体属性中删除 \sffamily:
\documentclass{article}
\usepackage{fontspec,xunicode}
\usepackage{tikz}
\usetikzlibrary{shapes.callouts}
\setmainfont[Script=Devanagari,AutoFakeBold=3.5]{Sanskrit 2003}
\definecolor{myblue}{RGB}{122,175,234}
\newcommand\tikzmark[1]{%
\tikz[remember picture,overlay]\node (#1) {};}
\newcommand\MyNote[3][]{%
\begin{tikzpicture}[remember picture,overlay]
\node[rectangle callout, fill=myblue,text width=2cm,align=center,font=\color{white},#1] at #2 {#3};
\end{tikzpicture}%
}
\begin{document}
पठ् \tikzmark{a}\qquad + अ + \tikzmark{b} ति ।
\MyNote[callout relative pointer={(0.6,1)}]{([yshift=-1.65cm,xshift=-1cm]a)}{क्रिया को धारण करता है वह धातु है ।}
\MyNote[callout relative pointer={(-0.5,1)}]{([yshift=-1.65cm,xshift=0.65cm]b)}{"अ \& ति" का कर्ता अर्थ को कह रहा है}
\end{document}
答案2
您可以使用 TikZ 和库中的标注形状很好地完成此操作shapes.callouts
。
使用选项将注释设置为标签overlay
,这样它们就不会影响 TikZ 图片的大小(我们不希望它比标记的文本大)。为了校正垂直尺寸,
\path[draw=none] ([email protected]) -- ([email protected]);
被添加,否则它将在下一行或上一行突出。
我不会在运行的文本中使用它,而是把它放在浮点数中或至少放在环境中center
。
标注指针的底部与标记文本一样宽(此处is
和sentence
)。
指针指向标记文本边框上的最近点,这是通过巧妙的线实现的
tikz@label@post/.append style={/pgf/callout absolute pointer=\tikz@node@at},
这确保\tikz@node@at
在实际计算之后对其进行评估。
代码
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.callouts}
\makeatletter
\tikzset{
Text/.style={
shape=rectangle,
anchor=base,
inner xsep=+0pt,
outer xsep=+0pt,
outer ysep=+0pt,
label={[%
shape=rectangle callout,
/utils/exec={%
\pgfpointdiff
{\pgfpointanchor{\tikzlastnode}{west}}
{\pgfpointanchor{\tikzlastnode}{east}}},
callout pointer width/.expanded=\the\pgf@x,
tikz@label@post/.append style={/pgf/callout absolute pointer=\tikz@node@at},
alias=tikz@callout]#1}
},
label position=below,
label distance=2ex,
every label/.style={draw,overlay},
labels/.style={every label/.append style={#1}}
}
\makeatother
\newcommand*{\myNote}[3][]{%
\tikz[baseline,#1]{
\node[Text={#3}] {#2};
\path[draw=none] ([email protected]) -- ([email protected]);
}%
}
\begin{document}
This \myNote{is}{This is a verb.} a \myNote[label position=above]{sentence}{This is another word.}.
\end{document}