我正在尝试使用它pgf-umlcd
来创建类图。该类包含一个方法名称,其参数类型很长,因此我使用它\\
来将定义拆分为两行。以下方法可用于创建该图。
\documentclass[10pt,letterpaper,notitlepage]{article}
\usepackage{tikz}
\usepackage{pgf-umlcd}
\begin{document}
%\begin{figure}[ht] % Remove this and it works
\begin{tikzpicture}[show background grid]
\begin{class}[text width=15 cm]{MyClass}{1, 12}
\operation{-someMethod( longVarName : LongClassName \&, \\
\hspace{3 cm}otherLongVarName : OtherLongClassName const \&): void}
\end{class}
\end{tikzpicture}
%\end{figure} % Remove this and it works
\end{document}
我可以用
export TEXINPUTS=$HOME/doc/texmf/tex//:`kpsepath tex`; pdflatex test.tex
我想将其放在图形中,以便我可以为其添加标题并在其他地方引用它。如果我通过取消注释图形行来实现这一点,则编译失败。
export TEXINPUTS=$HOME/doc/texmf/tex//:`kpsepath tex`; pdflatex test.tex
This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013/Cygwin)
restricted \write18 enabled.
entering extended mode
(./test.tex
<snip>
(/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg))
! Undefined control sequence.
\\->\let \reserved@e
\relax \let \reserved@f \relax \@ifstar {\let \reserved...
l.12 ...Name : OtherLongClassName const \&): void}
?
替换\\
为\newline
可以编译,但\hspace
其后的 不再缩进。
\\
在图形内部使用有问题吗?或者,有没有更好的方法来完成我在内部尝试做的事情pgf-umlcd
?
答案1
由于中未解释的原因source2e
,在命令中\parbox
,的定义\\
变得不够健全\@parboxrestore
,该命令在启动浮点时也会调用。
由于\operation
宏确实存在\protected@xdef
,\\
因此无法存活,变得脆弱。因此解决方案是在它前面加上\protect
;甚至更好的是,使用\newline
and \hspace*{3cm}
(无论如何,在行首添加空格时,这都是首选)。以下是两种方法:
\documentclass[10pt,letterpaper,notitlepage]{article}
\usepackage{tikz}
\usepackage{pgf-umlcd}
\begin{document}
\begin{figure}[htp]
\begin{tikzpicture}[show background grid]
\begin{class}[text width=15 cm]{MyClass}{1, 12}
\operation{-someMethod( longVarName : LongClassName \&, \protect\\
\hspace*{3cm}otherLongVarName : OtherLongClassName const \&): void}
\end{class}
\end{tikzpicture}
\end{figure}
\begin{figure}[htp]
\begin{tikzpicture}[show background grid]
\begin{class}[text width=15 cm]{MyClass}{1, 12}
\operation{-someMethod( longVarName : LongClassName \&, \newline
\hspace*{3cm}otherLongVarName : OtherLongClassName const \&): void}
\end{class}
\end{tikzpicture}
\end{figure}
\end{document}