
Ich habe folgenden Code:
\documentclass[a4paper]{article}
%% Language and font encodings
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[a4paper,top=3cm,bottom=2cm,left=3cm,right=3cm,marginparwidth=1.75cm]{geometry}
%% Useful packages
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{tikz} % For graphics
\usepackage{pgfplots}
\usepackage{xcolor}
\usetikzlibrary{matrix,arrows,calc,positioning,shapes,decorations.pathreplacing}
\usepackage{graphicx}
\usepackage{tikz-uml}
\title{Your Paper}
\author{You}
\begin{document}
\maketitle
\section{Introduction}
Diagram below:
\small\begin{tikzpicture}
\begin{umlseqdiag}
\umlactor{User}
\umlobject{Proxy}
\umlobject[x=7]{Entry station}
\umlobject[x=10]{Dst station}
\begin{umlcall}[op=retrieve(token),return=pkt-info]{User}{Proxy}
\begin{umlcall}[op=RReq,return=success]{Proxy}{Entry station}
\end{umlcall}
\begin{umlcall}[op=RReq,return=success]{Entry station}{Dst station}
\end{umlcall}
\begin{umlcallself}[op=lookup,return=pkt-info]{Dst station}
\end{umlcallself}
\begin{umlcall}[op=RRes,return=success]{Dst station}{Entry station}
\end{umlcall}
\begin{umlcall}[op=RRes,return=success]{Entry station}{Proxy}
\end{umlcall}
\end{umlcall}
\begin{umlfragment}[type=loop, label=$\forall p_k$, inner ysep=1]
\begin{umlcall}[dt=7, op=retrieve(token $p_k$),return=fragment $p_k$]{User}{Proxy}
\umlcreatecall[x=7]{Proxy}{Station}
\begin{umlcall}[op=RRes,return=success]{Proxy}{Station}
\end{umlcall}
\end{umlcall}
\end{umlfragment}
\begin{umlcallself}[dt=5, op=aggregate($p_k$), return=packet $p$]{User}
\end{umlcallself}
\end{umlseqdiag}
\end{tikzpicture}
\end{document}
Das Problem liegt beim Objekt Station
. Ich möchte den Create-Aufruf eigentlich nicht haben. Ich möchte nur, dass diese Spur dort für das Objekt platziert wird Station
und ich sie verwenden kann, das ist alles. Ich möchte nicht, dass der create
Aufruf erfolgt.
Wenn das nicht möglich ist, wie kann ich zumindest die Beschriftung ändern, sodass statt der Beschriftung create
etwas anderes angezeigt wird?
Antwort1
Der Text dieses Knotens wird direkt in den Code des Pakets geschrieben (Zeile 4622, in der neuesten Version) und wird nicht durch ein Makro dargestellt, das neu definiert werden kann.
Sie können jedoch mithilfe von xpatch
die Definition von patchen und z. B. durch \umlcreatecall
ersetzen , ein Makro, das Sie beliebig definieren und neu definieren können. Unten habe ich es zunächst als definiert und im Diagramm mit neu definiert.{create}
{\CreateTxt}
\newcommand{\CreateTxt}{create}
\renewcommand
Unabhängiger Hinweis: Sie laden graphicx
zweimal, was nicht wirklich notwendig ist. Und sowohl als graphicx
auch xcolor
werden von geladen tikz
, daher ist es nicht unbedingt erforderlich, sie explizit hinzuzufügen. tikz
wird wiederum sowohl von pgfplots
als auch geladen tikz-uml
, also mit einem dieser Elemente … Sie verstehen, was ich meine.
\documentclass[a4paper]{article}
%% Language and font encodings
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[a4paper,top=3cm,bottom=2cm,left=3cm,right=3cm,marginparwidth=1.75cm]{geometry}
%% Useful packages
\usepackage{amsmath}
\usepackage{tikz-uml}
\usepackage{xpatch}
\newcommand\CreateTxt{create}
% in the macro \umlcreatecall, replace "{create}" with "{\CreateTxt}":
\xpatchcmd{\umlcreatecall}{{create}}{{\CreateTxt}}{}{}
\begin{document}
\begin{tikzpicture}
\small
\begin{umlseqdiag}
\umlactor{User}
\umlobject{Proxy}
\umlobject[x=7]{Entry station}
\umlobject[x=10]{Dst station}
\begin{umlcall}[op=retrieve(token),return=pkt-info]{User}{Proxy}
\begin{umlcall}[op=RReq,return=success]{Proxy}{Entry station}
\end{umlcall}
\begin{umlcall}[op=RReq,return=success]{Entry station}{Dst station}
\end{umlcall}
\begin{umlcallself}[op=lookup,return=pkt-info]{Dst station}
\end{umlcallself}
\begin{umlcall}[op=RRes,return=success]{Dst station}{Entry station}
\end{umlcall}
\begin{umlcall}[op=RRes,return=success]{Entry station}{Proxy}
\end{umlcall}
\end{umlcall}
\begin{umlfragment}[type=loop, label=$\forall p_k$, inner ysep=1]
\begin{umlcall}[dt=7, op=retrieve(token $p_k$),return=fragment $p_k$]{User}{Proxy}
% redefine \CreateTxt to be empty
\renewcommand\CreateTxt{}
\umlcreatecall[x=7]{Proxy}{Station}
\begin{umlcall}[op=RRes,return=success]{Proxy}{Station}
\end{umlcall}
\end{umlcall}
\end{umlfragment}
\begin{umlcallself}[dt=5, op=aggregate($p_k$), return=packet $p$]{User}
\end{umlcallself}
\end{umlseqdiag}
\end{tikzpicture}
\end{document}