Gibt es einen Befehl, der den Zugriff auf die drei Argumente eines anderen Befehls ermöglicht?

Gibt es einen Befehl, der den Zugriff auf die drei Argumente eines anderen Befehls ermöglicht?

Angenommen, ich habe einen Befehl wie diesen: \command{<command>}{<content>}{<value>}. Gibt es eine Möglichkeit, mit einem der anderen Argumente auf diese zuzugreifen? Beispielsweise so etwas wie das hier:

\getcontent{<value> or <command>}%----> output: <content>
\getcommand{<content> or <value>}%----> output: <command>
\getvalue{<content> or <command>}%----> output: <value>

Ich habe auch keine Ahnung, wie ich das definieren soll \command{<command>}{<content>}{<value>}?

Antwort1

Vielleicht ist folgendes eine Option:

Bildbeschreibung hier eingeben

\documentclass{article}

% \command{<command>}{<content>}{<value>}
\newcommand{\command}[3]{%
  \expandafter\def\csname #2@cmd\endcsname{#1}%
  \expandafter\def\csname #3@cmd\endcsname{#1}%
  \expandafter\def\csname #1@cnt\endcsname{#2}%
  \expandafter\def\csname #3@cnt\endcsname{#2}%
  \expandafter\def\csname #1@val\endcsname{#3}%
  \expandafter\def\csname #2@val\endcsname{#3}%
}
\newcommand{\getcontent}[1]{%
  \ifcsname #1@cnt\endcsname
    \csname #1@cnt\endcsname
  \else
    No command/value associated with #1.
  \fi
}
\newcommand{\getcommand}[1]{%
  \ifcsname #1@cmd\endcsname
    \csname #1@cmd\endcsname
  \else
    No content/value associated with #1.
  \fi
}
\newcommand{\getvalue}[1]{%
  \ifcsname #1@val\endcsname
    \csname #1@val\endcsname
  \else
    No command/content associated with #1.
  \fi
}

\begin{document}

\command{abc}{def}{ghi}

\getcommand{def} % abc
\getcommand{ghi} % abc

\getcontent{abc} % def
\getcontent{ghi} % def

\getvalue{abc} % ghi
\getvalue{def} % ghi

\getcommand{jkl}% No jkl found

\getcontent{jkl}% No jkl found

\getvalue{jkl}% No jkl found

\end{document}

<command>Sie werden feststellen, dass ich der Einfachheit halber als Zeichenfolge und nicht als Steuersequenz gelassen habe . Da es keinen Kontext für die Verwendung von gibt <command>, ist dies möglicherweise kein Problem.

verwandte Informationen