1. 程式人生 > >[Latex] tikz包使用時出現的一個問題及解決

[Latex] tikz包使用時出現的一個問題及解決

最近寫論文時,需要用到一個填充的等邊三角形作為符號標記,latex本身的\blacktriangle 所呈現的卻是等腰三角形,而\triangle只是未填充的等邊三角形。網上查閱資料,發現了tikz包可以用於繪製一些符號,在導言區定義符號,並在實際始終在利用對符號的命名直接呼叫。

於是,定義了一個填充三角形,如下

    \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}}
但是在實際使用時,將該符號置於圖片的caption中,卻出現了問題,編譯不能通過,報錯#! Missing \endcsname inserted#。對於此報錯資訊,普遍給出的答案是缺少“}”,認真檢查了符號定義部分(定義該符號前正常編譯),確實未找到缺少的大括號。

Google上找了一些網頁,發現類似報錯很多,但是原因卻各不相同,同樣未找到與我遇到問題一致的。最後考慮是否是\newcommand命令與\caption存在衝突,果然在google

的一個Group中找到了解決方案點選開啟連結

解決方案有二,其一為在定義符號時, 用\DeclareRobustCommand替代\newcommand;其二是在呼叫\brtri時,使用\protect\brtri的形式。