为什么 babel 在 Tikz 中不起作用?

为什么 babel 在 Tikz 中不起作用?

在 TikZ Mindmap 中将子节点添加到子节点有一些示例代码,其中德语单词未正确连字。我尝试使用inputenc(表示 Umlaute) 和来修复它\usepackage[ngerman]{babel}。不幸的是,它对连字没有影响。

必须改变什么?

下面您可以看到它的一个工作示例,其中显示了强制连字和无连字: 编译后的 MWE 的特写

\documentclass{article}
    \usepackage[ngerman]{babel}
    \usepackage{tikz}
    \usetikzlibrary{mindmap,trees}

    \begin{document}
    \begin{tikzpicture}
    \path[mindmap,concept color=black,text=white]
        node[concept] {Die Wahrnehmung}
        [clockwise from=0]
        child[concept color=green!50!black] {
        node[concept] {Sensorische Prozesse}
        [clockwise from=90]
        child { node[concept] {Schwellen} 
child {node[concept] {Unterschiedsschwelle}}
child {node[concept] {Unter\-schieds\-schwel\-le}}
}
} 
child[concept] { node[concept] {Klassifikation} };
\end{tikzpicture}
\end{document}

答案1

原因是 TeX 不会对段落中的第一个单词进行连字符连接。\hspace{0pt}例如,插入将启用连字符连接,因为这样单词就不在最开头了:

child {node[concept] {\hspace{0pt}Unterschiedsschwelle}}

答案2

可以滥用节点选项中的键,在节点开头font=添加宏。但是,这会覆盖以前的字体键(如果存在)。\hspace{0pt}

child {node[concept,font={\hspace{0pt}}] {Unterschiedsschwelle}}

为了保留现有的font密钥,您可以在序言中定义以下内容

\makeatletter
\tikzset{add to font/.code={\expandafter\def\expandafter\tikz@textfont\expandafter{\tikz@textfont#1}}}
\makeatother

然后使用它作为

child {node[concept,add to font={\hspace{0pt}}] {Unterschiedsschwelle}}
child {node[concept,add to font={\hspace{0pt}}] {Unter\-schieds\-schwel\-le}}

获得

在此处输入图片描述

相关内容