图内的多行 \操作

图内的多行 \操作

我正在尝试使用它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;甚至更好的是,使用\newlineand \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}

在此处输入图片描述

相关内容