Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I am using the TikZ-UML package to make a UML Sequence Diagram and want to remove the ":" character (separating class and instance name) when using \begin{umlcreatecall}[]{A}{B}. This is possible with the no ddots option when using \umlobject[no ddots, x=4]{A} to define the lifeline initially rather than dynamically (e.g. "create" with constructor during part of the sequence)

Example 1: "no ddots" set on umlobject

\begin{tikzpicture}
    \begin{umlseqdiag}
        \umlobject[no ddots, x=4]{A}
        \umlobject[no ddots, x=8]{B}

        \begin{umlcall}[op=create]{A}{B}
        \end{umlcall}
    \end{umlseqdiag}
\end{tikzpicture}   

Using umlobject to create instance

Example 2: Need to find something similar to "no ddots" that works with umlcreatecall

\begin{tikzpicture}
    \begin{umlseqdiag}
        \umlobject[no ddots, x=4]{A}

        \begin{umlcreatecall}[x=8]{A}{B}
        \end{umlcreatecall}
    \end{umlseqdiag}
\end{tikzpicture}   

Using umlcreatecall to create instance

Update: Here is an example showing why one would use \begin{} and \end{} in tikz-uml; specifically, because it is semantically how you nest function calls (need to tell the macro / tikz-uml how far down the "activation box" should extend and how the arrows are positioned).

    \begin{tikzpicture}
        \begin{umlseqdiag}
            \umlobject[no ddots, x=0]{A}
            \umlobject[no ddots, x=6]{B}
            \umlobject[no ddots, x=12]{C}

            \begin{umlcall}[op=doComplexTask(), type=synchron, with return]{A}{B}
                \begin{umlcall}[op=doSomethingWithC(), type=synchron, with return]{B}{C}
                \end{umlcall}
                % Calling these without the \begin and \end does not work
                %\umlcall[op=doMoreStuff(), type=synchron]{B}{B}
                %\umlcall[op=doStuffWithA(), type=synchron, with return]{B}{A}
            \end{umlcall}
        \end{umlseqdiag}
    \end{tikzpicture}

Example of nested call (works with umlcall or umlcreatecall)

share|improve this question
    
Welcoem to TeX.sx! Feel free to visit our TeX.SX starter guide –  Peter Jansson May 29 '13 at 15:18
    
It would also be nice if there were a way to make the umlcreatecall force an activation box representing the constructor running in the newly created object, but I guess that would be a question for later. –  iX3 May 29 '13 at 15:28

1 Answer 1

up vote 2 down vote accepted

The tikz-uml is not very flexible and programmed like TikZ (every setting is defaulted before it is used). This means that the macro that contains : is defined in \umlobject before the options are applied. The \umlobject that is used by \umlcreatecall has no distinctive option (neither every umlobject or every created umlobject) that can be used.

The following works but overwrites every possible : for \umlobjects and survives \umlcreatecall which is the reason the second example has { } to keep the change to the every node style local.

Code

\documentclass[tikz,convert=false]{standalone}
\usepackage{tikz-uml}
\begin{document}
\begin{tikzpicture}
    \begin{umlseqdiag}
        \umlobject[no ddots, x=2]{A}
        \umlcreatecall[x=4,/tikz/nodes={/tikzuml/obj/no ddots}]{A}{B}
        \umlobject[x=6]{C}
    \end{umlseqdiag}
\end{tikzpicture}
\begin{tikzpicture}
    \begin{umlseqdiag}
        \umlobject[no ddots, x=2]{A}
        {\umlcreatecall[x=4,/tikz/nodes={/tikzuml/obj/no ddots}]{A}{B}}
        \umlobject[x=6]{C}
    \end{umlseqdiag}
\end{tikzpicture}
\end{document}
share|improve this answer
    
Is it still possible to nest more (e.g. \begin{umlcall}[]{B}{C}...) inside of the umlcreatecall then? When I try adding the braces around a \begin{umlcreatecall} it only works if the corresponding \end{umlcreatecall} is also inside the braces, but in that case all of the nested content is also affected by the override. Also, do you know of a more flexible UML diagramming package for TeX that has similar capabilities to tikz-uml? –  iX3 May 29 '13 at 18:57
    
@iX3 Can you make an example (you can edit your question) about what you mean? I literally have never used tikz-uml. Please not that umlcreatecall is not an environment but a command/macro. The bracing solution cannot work with an environment as you wish. It works as an environment because of how \begin and \end work but \umlcreatecall is not intended as an environment. If needed it is possible to define a command or a key that re-sets the : again. –  Qrrbrbirlbel May 29 '13 at 23:32
    
I have updated the question with an example of why it might be desirable to nest calls (UML term, sorry for not knowing more TeX nomenclature). I used umlcall in the example but one could also use umlcreatecall in that same way (though there is a minor bug in how tikz-uml draws it in some cases -- I've already contacted the author regarding that). –  iX3 May 30 '13 at 13:45
    
@iX3 umlcall is an environment but not \umlcreatecall. –  Qrrbrbirlbel May 30 '13 at 16:33
    
Oh, I see; it is different in the documentation. Is there a way to make \umlcreatecall an environment? (Sorry, I am not very familiar with TeX yet.) How then can I make nested calls (e.g. illustrating the constructor) if I can't use umlcreatecall as an environment? –  iX3 May 30 '13 at 18:13

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.