ヴィジュネル広場を埋める方法は?



How Fill Vigen Re Square



解決:

一度に1行ずつテーブルに入力します。

 documentclass {article}  usepackage [table] {xcolor}  definecolor {headers} {RGB} {234,232,218}  ExplSyntaxOn  tl_new:N  l_vigenere_body_tl  NewDocumentCommand { vigenere} {} {%最初の行を作成 tl_set:Nn  l_vigenere_body_tl { hline  rowcolor {headers}}  tl_put_right:Nx  l_vigenere_body_tl { int_step_function:nN {26}  vigenere_first:n}  tl_put_right:Nn  l_vigenere_body_tl {\  hline}  int_step  tl_put_right:Nn  l_vigenere_body_tl { bfseries  int_to_Alph:n {## 1}}  tl_put_right:Nx  l_vigenere_body_tl { int_step_function:nnN {## 1} {## 1 + 25}  vigenere_further:n}  tl Nn  l_vigenere_body_tl {\  hline}}  group_begin: setlength { tabcolsep} {0.5pt}  sffamily  begin {tabular} {| > { columncolor {headers}} c | * {26} c}  l_vigenere_body_tl  end {tabular}  group_end:}  cs_new:Nn  vigenere_first:n {& exp_not:N  bfseries  int_to_Alph:n {#1}}  cs_new:Nn  vigenere_further:n {& int_to_Alph:n { int_mod:nn {#1-1} {26} + 1}}  ExplSyntaxOff  begin {document}  vigenere  end {document}

ここに画像の説明を入力してください




これがLuaLaTeXベースのソリューションです。

ここに画像の説明を入力してください



 documentclass {article}  usepackage [letterpaper、margin = 1in] {geometry}%ページパラメータを適切に設定 usepackage {array}%for ' extrarowheight'マクロ usepackage [table] {xcolor}  usepackage {luacode}  begin { luacode}
s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'-i = 1,26の補助関数関数rowprint(t)do tex.sprint('& '.. t:sub(i、i))end tex.sprint(' \\ \ hline ')end-メイン関数function vigenere()tex.sprint(' \ hline ')-ヘッダー行tex.sprint(' \ rowcolor {lightgray} ')for i = 1,26 do tex .sprint( '&\ textbf {\ t​​extsf {' .. s:sub(i、i).. '}}')end tex.sprint( '\\ \ hline')-データ行(AからZへ)t = s for j = 1,26 do t = s:sub(j).. s:sub(1、j-1)tex.sprint( '\ cellcolor {lightgray} \ textbf {\ t​​extsf {'.. t:sub(1,1)..'}} ')rowprint(t)end end
 end {luacode}  begin {document}  begin {center}  setlength  tabcolsep {3pt}  setlength  extrarowheight {3pt}  begin {tabular} {| * {27} c}  directlua {vigenere()}  end {tabular}  end {center}  end {document} 

を使用してアルファベットを循環する別の方法pgffor:

ここに画像の説明を入力してください

 documentclass {article}  usepackage [margin = 1in] {geometry}  usepackage {pgffor、xcolor、eqparbox}  makeatletter  newcommand { ALPH} [1] {% ifnum#1> 26  @Alph { numexpr# 1-26}% else  @Alph {#1}% fi}  makeatother  begin {document}  begingroup  makeatletter  sffamily  footnotesize  centering  fcolorbox {black} {brown!50!white} { eqmakebox [vignere] { vphantom {Q}}}%左上のボックス foreach  Char in {1、...、26} {% fcolorbox {black} {brown!50!white} { eqmakebox [vignere] { vphantom {Q}  bfseries  @Alph { Char}}}%ヘッダー} \ [-1pt]  foreach  CharA in {0、...、25} {% fcolorbox {black} {brown! 50!white} { eqmakebox [vignere] { vphantom {Q}  bfseries  @Alph { numexpr  CharA + 1}}}%左の列 foreach  CharB in {0、...、25} {%  fbox { eqmakebox [vignere] { vphantom {Q}  ALPH { numexpr  CharA +  CharB + 1}}}%}%\ [-1pt]}  par  endgroup  end {document}