Removing a tikzpicture from a \caption in LyX

New info at the bottom!

Previous title: LyX "incomplete \iffalse"

Previous text:

I'm new to LyX and TeX in general, so this might be a very easy problem.

I had made a TikZ image as a figure in my document, and it worked fine. I wanted to add a caption, and learned that you have to put it in a float to do that, so I moved it into a float (I'm not completely sure what a float is, but I don't think that matters here; I put the TeX code inside a TeX code block inside a figure float). Suddenly, it doesn't work at all.

Trying to render a preview makes it say "The external program pdflatex finished with an error." I looked at the log, as it suggested, which says "! Incomplete \iffalse; all text was ignored after line 68." I opened the file in notepad++ and looked at line 68; here's the neighborhood of it:

 65 \quotes_language english
66 \papercolumns 1
67 \papersides 1
68 \paperpagestyle default
69 \tracking_changes false
70 \output_changes false
71 \html_math_output 0


I then tried ctrl-f for "iffalse" and got no results. I also tried a search for "if", and only found the words "different" and "specifications" used in my document body, as well as line 55 "\justification true"--so there isn't even an if statement anywhere in this thing to cause that error!

Apologies if this has already been asked. It seems there are a lot of "incomplete \iffalse" questions on here, but I don't know enough about TeX to know what applies to my situation; they all seem to say "incomplete \iffalse with \somefunctionidon'trecognise" and I'm not sure if any of these apply.

So, at the advice of user Torbjørn T., I looked at the code in the TeX preview panel in LyX itself (which I hadn't used before because it doesn't show line numbers; I hadn't realized it didn't just display the .lyx file) and found that the TikZ code had found its way into a caption block, so the full figure code reads

\begin{figure}
\caption{\begin{tikzpicture}
\draw [white, fill=white] (0,0) circle [radius=60mm];;
\draw [brown, fill=brown] (0,0) circle [radius=50mm];;
\draw [->, thick] (0,0) -- (50mm,0);
\node [below] at (25mm,0) {$a=50\si{mm}$};
\draw [<->, thick] (50mm,0) -- (60mm, 0);
\node [above] at (55mm, 0) {$b$};
\node [below] at (55mm, 0) {10mm};
\end{tikzpicture}}
\end{figure}


I cannot edit this in the TeX preview panel, and I'm not sure how to extricate the tikzpicture block from the \caption in LyX. Could someone explain how to do this?

• The line numbers will refer to the generated LaTeX source file, not the .lyx file. Hard to say why this happens, I can't think of any reason why a tikzpicture should work outside a float but not inside it. Can you reduce your file to the smallest possible document that demonstrates the error, and add the LaTeX code to your question? (You can find the LaTeX code in View --> Code Preview Pane, select Complete source on the right side of the panel, if it isn't chosen already. Grab everything from \documentclass to \end{document}.) – Torbjørn T. May 25 '18 at 14:58
• While working on that I found that apparently it thinks the tikzpicture is a caption...? It's put it inside a \caption block. I suspect this is what's causing the problem. – Hearth May 25 '18 at 15:34
• That might cause a problem, if the cause lies there, all you need to do is move the Tex code block outside the caption. – Torbjørn T. May 25 '18 at 15:39
• I'm not sure how to do that. See the edited question, could you provide some guidance? – Hearth May 25 '18 at 15:42
• When you add a figure in LyX, you get a figure inset, and inside it a caption inset. The caption is thus the inner box, I think it says “Figure 1” before it. When you moved the ERT, you placed inside the caption inset. It should be placed before the caption inset, but still inside the figure. – Torbjørn T. May 25 '18 at 15:46

Here, the outer frame (inset) represents the figure environment in LaTeX, so that is the float. The inner frame, right of "Figure 1:", where the cursor is placed, is a caption inset. The caption text goes in this inner inset.
So when you're about to add the image, tikzpicture, or whatever it is, to the figure, you should move the cursor outside the caption inset first. E.g. like this: