[Latex] tikz包使用時出現的一個問題及解決
阿新 • • 發佈:2019-01-30
最近寫論文時,需要用到一個填充的等邊三角形作為符號標記,latex本身的\blacktriangle 所呈現的卻是等腰三角形,而\triangle只是未填充的等邊三角形。網上查閱資料,發現了tikz包可以用於繪製一些符號,在導言區定義符號,並在實際始終在利用對符號的命名直接呼叫。
於是,定義了一個填充三角形,如下
但是在實際使用時,將該符號置於圖片的caption中,卻出現了問題,編譯不能通過,報錯#! Missing \endcsname inserted#。對於此報錯資訊,普遍給出的答案是缺少“}”,認真檢查了符號定義部分(定義該符號前正常編譯),確實未找到缺少的大括號。\newcommand{\brtri}{ \begin{tikzpicture}[scale=0.7] \draw[line width=0.1pt] (0em,0em) -- (0.5em,0.866em) --(1em,0em) -- (0em,0em); \fill (0em,0em) -- (0.5em,0.866em) --(1em,0em) -- (0em,0em); \end{tikzpicture}}
Google上找了一些網頁,發現類似報錯很多,但是原因卻各不相同,同樣未找到與我遇到問題一致的。最後考慮是否是\newcommand命令與\caption存在衝突,果然在google
的一個Group中找到了解決方案(點選開啟連結)。
解決方案有二,其一為在定義符號時, 用\DeclareRobustCommand替代\newcommand;其二是在呼叫\brtri時,使用\protect\brtri的形式。