此主题源自此主题。
\documentclass{article}
\usepackage{unicode-math} % This causes the question mark bug
% This code requises unicode-math
% How can you use the code without unicode-math -package?
\setmathfont[BoldFont={latinmodern-math.otf}]{latinmodern-math.otf}
\setmathfont[range=\mathscr,Scale=MatchUppercase]{Asana-Math.otf}
\usepackage{tikz}
\usetikzlibrary{tikzmark,decorations.pathreplacing,calc}
\newcommand\MyText[4][0pt]{%
\begin{tikzpicture}[overlay, remember picture]
\draw [decoration={brace},decorate,thick]
( $ ({pic cs:#3}|-{pic cs:#2}) + (#1,1.3ex) $ ) --
node[anchor=west,xshift=5pt,text width=5cm] {#4}
( $ (pic cs:#3) + (#1,0) $ );
\end{tikzpicture}%
}
% I have defined question like this
\usepackage[framemethod=tikz]{mdframed}
\newtheorem{question}{Question}
\mdfdefinestyle{que}{
linecolor=cyan,
backgroundcolor=cyan!20,
}
\surroundwithmdframed[style=que]{question}
\begin{document}
\begin{question}
Lorem ipsum?
\end{question}
\end{document}
我在想你为什么需要unicode-math
TikZ 代码包。
为什么 TikZ 代码需要unicode-math
包?
答案1
这是一个非常不幸的情况。
问题是,在处理标记时,也就是扫描时unicode-math
,它的大部分工作都由它完成。其中一部分工作是将其定义为产生问号的数学符号。\AtBeginDocument
\begin{document}
\question
因此,当您使用 定义question
环境时\newtheorem
,不会引发任何错误。但之后unicode-math
会重新定义(这是处理\question
时执行的宏) 。\begin{question}
最小示例:
\documentclass{article}
\usepackage{unicode-math} % This causes the question mark bug
\newtheorem{question}{Question}
\begin{document}
\begin{question}
Lorem ipsum?
\end{question}
\end{document}
您可以更改环境的名称,也可以恢复定义;第二种策略可以通过以下方式实现
\documentclass{article}
\usepackage{unicode-math} % This causes the question mark bug
\newtheorem{question}{Question}
\let\masiquestion\question
\AtBeginDocument{%
\let\umquestion\question
\let\question\masiquestion
}
\begin{document}
\begin{question}
Lorem ipsum?
\end{question}
\end{document}
在我看来,unicode-math
应该重新定义命令时至少发出一个警告。
答案2
正如我在评论中写的那样:unicode-math 定义了\question
。因此您不能使用“question”作为环境的名称。将其替换为例如 questionX:
\documentclass{article}
\usepackage{unicode-math} % This causes the question mark bug
\newtheorem{theorem}{Theorem}
\newtheorem{question}[theorem]{Question}
\newtheorem{questionX}[theorem]{Question}
\begin{document}
\question \question \question %defined by unicode math.
\begin{question} %fails
Lorem ipsum?
\end{question}
\begin{questionX} %works
Lorem ipsum?
\end{questionX}
\end{document}