Quais símbolos devem ser usados ​​como espaços reservados para letras e dígitos numéricos?

Quais símbolos devem ser usados ​​como espaços reservados para letras e dígitos numéricos?

Preciso descrever de maneira geral a sintaxe de sequências alfanuméricas aleatórias, digamos ACW3920ou 39B0Q8, e discutir certos casos, por exemplo, os dois primeiros dígitos sendo letras, ou a sequência que termina com BA, 87ou similar. Usar Xcomo caractere de espaço reservado para letras e Ncomo caractere de espaço reservado para números levaria à confusão porque alguns dos casos discutidos lidam com sequências começando com Xou N: NXNNNN, a categorização das amostras NX9837, NX9877, NX123X(todas começando com NX), não comunica o sub- sequência que todos eles têm em comum, nem leva em consideração dígitos que podem ser uma letraouum número.

Idealmente, eu usaria símbolos de espaço reservado que identificassem exclusivamente um dígito de letra, um dígito numérico ou um dígito ambivalente. Já existe algum símbolo usado para esse problema (como ¤para moeda não especificada), que não pareça muito estranho entre as letras normais? Símbolos como \CIRCLEe seus derivados afetam muito a cor do tipo e ...não transmitem o número de dígitos.

Responder1

Posso responder do ponto de vista do TeX. Minha idéia é definir as strings em fonte monoespaçada (talvez escolha uma diferente do padrão), mas as “variáveis” são uma caixa D ou uma caixa L para “dígito” e “letra”. Talvez você possa adicionar outro símbolo para um caractere que seja um dígito ou uma letra.

A principal coisa neste código é que ele é muito personalizável: as variáveis ​​​​são denotadas por ?e !(você pode escolher de lse letras minúsculas não forem usadas nas strings), a conversão para caracteres em caixa acontece examinando cada caractere na entrada e verificando se representa uma “variável” (espaço reservado).

\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}

Na última linha mostro que as strings ocupam o mesmo espaço, estejam elas cheias ou contenham espaços reservados.

insira a descrição da imagem aqui

Se você adicionar \usepackage[lighttt]{lmodern}você obtém

insira a descrição da imagem aqui

Responder2

Você poderia tentar \textvisiblespacese não me engano sua intenção.

\documentclass{article}

\begin{document}

ACW3920\qquad A\textvisiblespace W39\textvisiblespace 0

NX9837\qquad \textvisiblespace X9\textvisiblespace 3\textvisiblespace

\end{document}

insira a descrição da imagem aqui

informação relacionada