단어의 일부에 TikZ를 사용하여 임의의 양의 밑줄 + 설명 사용

단어의 일부에 TikZ를 사용하여 임의의 양의 밑줄 + 설명 사용

이는 다음의 확장입니다.이 질문. 언어학에서는 단어 분석이 필요한 경우가 많으며 TikZ는 장면에 생명력과 색상, 그리고 무엇보다도 명확성을 부여하는 훌륭한 도구라고 생각합니다. 나는 이것을 성취할 기술이 없기 때문에 내가 하고 싶은 일의 스케치를 그렸습니다.

사용하여다른 질문그리고다음 스케치출발점으로, 어떤 영리한 사람이 유연한 해결책을 생각해 낼 수 있기를 바랍니다.

잠정 기준 목록

  1. 중괄호는 감싸는 특정 문자를 대상으로 합니다.달성되지 않음
  2. 중괄호(중괄호)는 서로 겹칠 수 있어야 합니다.달성되지 않음
  3. 단어까지의 중괄호 거리는 가변적이어야 합니다.(다른 질문에서 달성됨)
  4. 설명 버팀대까지의 거리는 가변적이어야 합니다.(2013년 4월 2일 업데이트 참조 완료)
  5. 설명은 버팀대에서 멀리 떨어진 곳에 배치할 수 있을 만큼 유연해야 하며 점선(또는 어떤 종류의 선)으로 버팀대와 연결되어야 합니다.(2013년 4월 2일 업데이트 참조 완료)
  6. 중괄호는 단어 위와 아래에 위치할 수 있어야 합니다.달성되지 않음일종의 타악기의 답변을 참조하십시오
  7. 단어의 전체 단락에 유연하고 쉽게 적용할 수 있습니다(예를 들어 핀란드어로 된 Our Father와 같은 것!)(TikZ는 단어의 지정된 문자에서 중괄호 너비를 계산합니다)달성되지 않음

TikZ 단어 분석 예:

TikZ 단어 분석


업데이트2013년 4월 2일: 기준 #4 및 #5

오늘은 기준 4번과 5번을 충족할 수 있었습니다! 그것은 해킹 작업이며 간소화될 수도 있습니다(이 작업을 수행할 전문가를 찾고 있습니다!).

다른 질문에서 코드를 가져와 추가했습니다.

  • 변수
    • 수직 조정(yshift=)텍스트의 위치
    • 수평의(xshift=)텍스트의 위치
    • 설명 너비 조정(텍스트 너비=)
  • 카운터
    • 자동 노드 이름
    • 설명을 중괄호와 연결("text#" 및 "brace#" 사용)설명을 올바른 중괄호에 연결하는 쉬운 방법을 허용합니다.

작동 원리

단어에 중괄호를 추가하려면 \tikzbrace 명령을 사용합니다. 다음은 옵션과 예를 보여줍니다.

\tikzbrace[brace yshift]{word}{설명}[text width=20ex][text yshift][text xshift]

예: 작동 중 * 변수 내부의 중복된 텍스트 너비에 유의하세요(이 문제를 해결하는 방법을 잘 모르겠습니다. "약간의 혼란" 섹션 참조).

\tikzbrace[-1ex]{word}{Nom.Sg. 접미사 -me}[text width=20ex][5ex][xshift=4cm]

약간의 혼란

명령의 변수 순서에 유의하세요.\NewDocument명령혼란스러워서 순서를 조금 실험해야 했습니다. TikZ가 매개변수를 구문 분석하는 순서 때문일 수 있습니다. 나도 잉여가 있어텍스트 너비=옵션이 하드코딩되어 있지만 변수에 width= 텍스트를 포함해야 합니다. 어쩌면 누군가가 이 문제를 해결하는 방법을 알고 있을 수도 있습니다.

TikZ 종속성을 사용하는 이유는 무엇입니까?

두 가지가 작동해야 합니다.

  • 전체 단어 참조(직역의 경우)(단어 위)

그리고

  • 여전히 특정 문자로 시작/끝나는 별도의 노드가 있습니다. (아래 단어)

이것은 누군가 문자를 참조로 사용하여 기준 #2를 해결하는 방법을 알고 있다면 해결될 수 있습니다(이 프로젝트의 유연성의 일부).

할 것

  • 누락된 기준 충족(위 체크리스트 참조, 해결될 때까지 업데이트 예정)
  • 설명 내 캐리지 리턴 허용(텍스트 너비가 설정된 경우에도 작동하지 않음)달성 (해결책: 설명 노드에 align= 매개변수가 필요합니다. 예: align=left)

기준 4 및 5의 업데이트된 예

\documentclass[]{beamer}
\usepackage{fontspec}
\usepackage{tikz-dependency}

\newcounter{mycounter}
\setcounter{mycounter}{1}


\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing,calc}
\usepackage{xparse}

% TikZ Command for Brace
\NewDocumentCommand{\tikzbrace}{O{-2.5ex} m m O{} O{1ex} O{} O{0ex}}{%
   \tikz[remember picture]\coordinate (left brace coord);%
   #2%
   \tikz[remember picture]\coordinate (right brace coord);%
   \begin{tikzpicture}[remember picture,overlay,
      transform canvas={yshift=#1}]
      \draw [decoration={amplitude=1ex,brace},decorate,#4] %
         (right brace coord) -- (left brace coord)
         node [#6,xshift=#7,midway,below=#5,font=\scriptsize] (text\arabic{mycounter}) {#3};
      \path (right brace coord) -- (left brace coord) node[midway,yshift=#1] (brace\arabic{mycounter}) {\stepcounter{mycounter}};
   \end{tikzpicture}%
}

\begin{document}
  \begin{frame}{Satz 1}
    \begin{dependency}[edge style={red,densely dotted}]
      \begin{deptext}
        \tikzbrace[-1ex]{Isae}{Vater} \& meidän, \& joka \& \tikzbrace[-1ex]{olet}{2Psg} \& \tikzbrace[-1ex]{taiva}{-\emph{issa}=pl (sg -\emph{ssa}) Inessiv, ähnlich Lokativ, e.g. talossa "in dem Haus"}[text width=20ex][10ex][xshift=0cm]\tikzbrace[-1ex]{issa}{-issa=pl von -ssa Inessiv (ähnlich wie Lokativ). Trägt die Bedeutung „in“
z.B talossa=in the house
}[text width=20ex][5ex][xshift=4cm],\\
      \end{deptext}
      \deproot[edge unit distance=1ex]{1}{Vater}
      \deproot[edge unit distance=1ex]{2}{unserer}
      \deproot[edge unit distance=1ex]{3}{wer}
    \end{dependency}
    % Lines - Description to Brace
    \begin{tikzpicture}[remember picture, overlay]
    \draw[red, dotted] (text4.north) to [out=90,in=270](brace4.south);
    \draw[red, dotted] (text3.north) to [out=90,in=270](brace3.south);
    \end{tikzpicture}
  \end{frame}
\end{document}

답변1

raise장식 과 같은 다양한 가능성으로 동일한 아이디어를 사용하거나 앵커를 사용하여 좌표를 이동할 수 있습니다 .

\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.pathmorphing,calc}
\begin{document}
\begin{tikzpicture}
\node[outer sep=0,inner sep=1pt] (w) {\Large Reenactment};
%The angle anchors
\draw[decoration={brace,raise=1mm},decorate,] (w.166) -- (w.13) 
node[midway,above=2mm,align=center,anchor=south] {Some linguistic\\ text here};

% The explicit coord calc
\draw[decoration={brace,raise=1mm,mirror},decorate] (w.south west) -- ($(w.south)-(8mm,0)$)
coordinate [midway,below=2mm] (c1);
\draw[densely dashed] ([yshift=-2mm]c1) --++(0,-1cm) node[below] {Prefix-re};

\draw[decoration={brace,raise=20mm,mirror},decorate] (w.south west) -- (w.south);

\draw[decoration={brace,mirror},decorate] 
     ([yshift=-3cm]w.south west) -- ([yshift=-3cm]w.south east);
\end{tikzpicture}
\end{document}

midway노드 배치는 중간 또는 옵션을 통해 수행할 수 있습니다 pos=number. 노드 변위는 거리를 인수로 제공 above하거나 인수로 제공하여 달성할 수 있습니다 below.

여기에 이미지 설명을 입력하세요

관련 정보