
我需要一般性地描述隨機字母數字序列的語法,例如ACW3920
或39B0Q8
,並討論某些情況,例如前兩位數字是字母,或以 或類似結尾的BA
序列87
。用作X
字母的佔位符和N
數字的佔位符會導致混亂,因為所討論的一些情況處理以X
或N
:開頭的NXNNNN
序列,樣本的分類NX9837
, NX9877
, NX123X
(全部以NX
)開頭,既不傳達子信息,也不傳達子訊息 它們都有共同的序列,也不考慮可以是字母的數字 它們。或者一個號碼。
理想情況下,我會使用佔位符號來唯一標識字母數字、數字或矛盾數字。是否有任何已使用的符號來解決此類問題(例如¤
未指定的貨幣),並且在正常字母之間看起來不太像?諸如及其派生符號之類的符號\CIRCLE
對字體顏色影響太大,並且...
不傳達位數。
答案1
我可以從TeX的角度來回答。我的想法是將字串設定為等寬字體(也許選擇與預設字體不同的字體),但「變數」字串是盒裝的 D 或盒裝的 L 表示「數字」和「字母」。也許您可以為字元添加另一個符號,即數字或字母。
此程式碼中的主要內容是它非常可自訂:變數由?
and表示!
(您可以選擇d
並且l
如果字串中未使用小寫字母),透過檢查輸入中的每個字元並檢查是否可以轉換為裝箱字元它代表一個「變數」(佔位符)。
\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}
在最後一行中,我表明字串佔據相同的空間,無論它們是完整的還是包含佔位符。
如果你添加\usepackage[lighttt]{lmodern}
你會得到