Welche Symbole sollen als Platzhalter für Buchstaben und Ziffern verwendet werden?

Welche Symbole sollen als Platzhalter für Buchstaben und Ziffern verwendet werden?

Ich muss die Syntax zufälliger alphanumerischer Sequenzen, beispielsweise ACW3920oder 39B0Q8, allgemein beschreiben und bestimmte Fälle diskutieren, z. B. wenn die ersten beiden Ziffern Buchstaben sind oder die Sequenz mit endet BAoder 87Ähnliches. Die Verwendung Xals Platzhalterzeichen für Buchstaben und Nals Platzhalterzeichen für Zahlen würde zu Verwirrung führen, da einige der diskutierten Fälle Sequenzen behandeln, die mit Xoder beginnen N: NXNNNN, die Kategorisierung der Beispiele NX9837, NX9877, NX123X(alle beginnen mit NX), kommuniziert weder die Teilsequenz, die sie alle gemeinsam haben, noch berücksichtigt sie Ziffern, die ein Buchstabe sein könnenodereine Zahl.

Idealerweise würde ich Platzhaltersymbole verwenden, die eindeutig eine Buchstabenziffer, eine numerische Ziffer oder eine ambivalente Ziffer identifizieren. Gibt es bereits verwendete Symbole für ein solches Problem (z. B. ¤für eine nicht angegebene Währung), die zwischen normalen Buchstaben nicht zu sehr abweichen? Symbole wie \CIRCLEund seine Ableitungen beeinflussen die Schriftfarbe zu stark und ...vermitteln nicht die Anzahl der Ziffern.

Antwort1

Ich kann aus TeX-Sicht antworten. Meine Idee ist, die Zeichenfolgen in einer monospaced Schriftart zu setzen (vielleicht eine andere als die Standardschriftart wählen), aber die „variablen“ sind ein eingerahmtes D oder ein eingerahmtes L für „Ziffer“ und „Buchstabe“. Vielleicht können Sie ein weiteres Symbol für ein Zeichen hinzufügen, das entweder eine Ziffer oder ein Buchstabe ist.

Das Wichtigste an diesem Code ist, dass er sehr anpassbar ist: Variablen werden durch ?und gekennzeichnet !(Sie können dund wählen l, wenn in den Zeichenfolgen keine Kleinbuchstaben verwendet werden), die Konvertierung in die eingerahmten Zeichen erfolgt, indem jedes Zeichen in der Eingabe untersucht wird und überprüft wird, ob es eine „Variable“ (Platzhalter) darstellt.

\documentclass{article}

\ExplSyntaxOn

\NewDocumentCommand{\rstring}{m}
 {
  \group_begin:
  \normalfont\ttfamily
  \mulmet_rstring:n { #1 }
  \group_end:
 }

\cs_new_protected:Nn \mulmet_rstring:n
 {
  \hspace{0.05em}
  \str_map_inline:nn { #1 }
   {
    \str_case:nnF { ##1 }
     {
      {?}{\mulmet_rstring_placeholder:n { D }}
      {!}{\mulmet_rstring_placeholder:n { L }}
     }
     { ##1 }
    \hspace{0.05em}
   }
 }

\cs_new_protected:Nn \mulmet_rstring_placeholder:n
 {
  \dim_set:Nn \fboxrule { 0.3pt }
  \dim_set:Nn \fboxsep { 0pt }
  \framebox[0.5em]
   {
    \hspace{-0.3pt}
    \vphantom{A}
    \normalfont\tiny\raisebox{0.4\height}{#1}
    \hspace{-0.3pt}
   }
 }

\ExplSyntaxOff

\begin{document}

We have the full string \rstring{ACW3920} but also
an incomplete one \rstring{AC????} and one with
\rstring{!!????} two letters and four digits.

\noindent one with \rstring{ABCDEF}

\end{document}

In der letzten Zeile zeige ich, dass Zeichenfolgen denselben Platz einnehmen, unabhängig davon, ob sie voll sind oder Platzhalter enthalten.

Bildbeschreibung hier eingeben

Wenn Sie hinzufügen, \usepackage[lighttt]{lmodern}erhalten Sie

Bildbeschreibung hier eingeben

Antwort2

Sie könnten es versuchen \textvisiblespace, wenn ich Ihre Absicht nicht falsch verstehe.

\documentclass{article}

\begin{document}

ACW3920\qquad A\textvisiblespace W39\textvisiblespace 0

NX9837\qquad \textvisiblespace X9\textvisiblespace 3\textvisiblespace

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen