Tikz 与 babel:引号和 pgfmathsetlengthmacro 的问题

Tikz 与 babel:引号和 pgfmathsetlengthmacro 的问题

我在这里看到了一些技巧babel 和 tikz 使用 \draw 的问题

但似乎我不能使用它们。
如果我在 MWE 中说
\usepackage[ngerman]{babel}
\usepackage[autostyle=true,german=quotes]{csquotes}

后来
\def\Symbol{X}
\pgfmathsetlengthmacro\symbolwidth{0.5*width("\Symbol")}
他给了我

! Package PGF Math Error: Unknown function `X' (in '0.5*width("X")').

我该怎么办?

在此处输入图片描述

% I need
% arara: lualatex 
% if this is an important info.

\documentclass{article}

% needed:  ======
\usepackage[ngerman]{babel}
\usepackage[autostyle=true,german=quotes]{csquotes}

% needed:  ======
\usepackage{tikz}
\usetikzlibrary{babel}

\def\Symbol{X}
\begin{document}
\section{Quotation Marks}
\enquote{test}
\glqq test 2\grqq

\section{TikZ}
% needed:  ======
\pgfmathsetlengthmacro\symbolwidth{0.5*width("\Symbol")}
\pgfmathsetlengthmacro\symbolheight{0.5*height("\Symbol")}
\begin{tikzpicture}[x=\symbolwidth, y=\symbolheight]
\node[draw]{\Symbol};
\end{tikzpicture}

\end{document}

答案1

图书馆babel仅在内部进入场景tikzpicture(感谢 Ulrike Fischer 指出这一点)。

该问题与\Symbol(简单也会X触发错误)和无关csquotes

解决方法:使用\string"

\documentclass{article}

% needed:  ======
\usepackage[ngerman]{babel}
\usepackage[autostyle=true,german=quotes]{csquotes}

% needed:  ======
\usepackage{tikz}
\usetikzlibrary{babel}

\def\Symbol{X}
\begin{document}
\section{Quotation Marks}
%\enquote{test}
\glqq test 2\grqq

\section{TikZ}
% needed:  ======
\pgfmathsetlengthmacro\symbolwidth{0.5*width(\string"\Symbol\string")}
\pgfmathsetlengthmacro\symbolheight{0.5*height(\string"\Symbol\string")}
\begin{tikzpicture}[x=\symbolwidth, y=\symbolheight]
\node[draw] at (0,0) {\Symbol};
\node[draw] at (4,0) {\Symbol};
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容