我在这里看到了一些技巧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}