我想绘制一个带有不同块的分割,每个块里面都有块索引。
由于我是 LaTeX 新手,我尝试使用
\fbox{$b_{0}$}\fbox{$b_{1}$}\fbox{$b_{2}$}%
\fbox{$..........................$}%
\fbox{$b_{S.t -1}$}\fbox{$b_{s.t}$}
但是,这样会给出不同大小的盒子。还有其他建议吗?
答案1
编辑以使用 LaTeX101 构造\framebox{}
,而不是\fbox{\makebox{}}
(D'oh!)。
使用\framebox
而不是\fbox
,因为它允许指定框宽度。在此示例中,我选择 1 英寸大小并在框内居中对齐。在上一个示例中,这已更改为左对齐。
\documentclass{article}
\newcommand\fxbox[1]{\framebox[1in][c]{#1}}
\parskip 1em\parindent 0in
\begin{document}
ORIGINAL:\\
\fbox{$b_{0}$}\fbox{$b_{1}$}\fbox{$b_{2}$}\fbox{$........................$%
}\fbox{$b_{S.t -1}$}\fbox{$b_{s.t}$}
UNIFORM WIDTH (center alignment):\\
\fxbox{$b_{0}$}\fxbox{$b_{1}$}\fxbox{$b_{2}$}\fxbox{$........................$%
}\fxbox{$b_{S.t -1}$}\fxbox{$b_{s.t}$}
\renewcommand\fxbox[1]{\framebox[1in][l]{\strut#1}}
UNIFORM WIDTH \& HEIGHT (left alignment):\\
\fxbox{$b_{0}$}\fxbox{$b_{1}$}\fxbox{$b_{2}$}\fxbox{$........................$%
}\fxbox{$b_{S.t -1}$}\fxbox{$b_{s.t}$}
\end{document}
您还会注意到,在中间的图中,由于内容的高度/深度,框的垂直高度是不同的。如果您希望它们相同,您可以\fxbox
像第三个示例中那样定义
\newcommand\fxbox[1]{\framebox[1in][l]{\strut#1}}
这\strut
会将垂直框延伸至整个行高范围。
答案2
TikZ 解决方案:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[
every node/.style={
draw,minimum width=1in,
text height=1.75ex,
text depth=0.5ex,
},
node distance=-\pgflinewidth,
]
\node (b 0) {$b_0$};
\node (b 1) [right=of b 0] {$b_1$};
\node (b 2) [right=of b 1] {$b_2$};
\node (dots) [right=of b 2] {.\,.\,.\,.\,.\,.\,.\,.};
\node (b St-1) [right=of dots] {$b_{S.t -1}$};
\node (b St) [right=of b St-1] {$b_{S.t}$};
\end{tikzpicture}
\end{document}
我使用every node
样式让图片中的所有节点具有相同的宽度和高度,并绘制边框。您可以删除带有和的线条,text depth
让text height
节点具有其自然高度。node distance
设置为边框的线宽,因此节点之间看起来像是共享一条线。
答案3
两种解决方案。
(1)宽度设置为最宽的条目,但提供了一个可选参数,可以通过添加来修改它。第二个可选参数(在括号中)是内部对齐,默认为居中。
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\rimatightboxes}{ O{0pt} D(){c} m }
{
\rima_tightboxes:nnn { #1 } { #2 } { #3 }
}
\seq_new:N \l_rima_input_seq
\seq_new:N \l_rima_boxes_seq
\dim_new:N \l_rima_width_dim
\box_new:N \l_rima_entry_box
\cs_new_protected:Npn \rima_tightboxes:nnn #1 #2 #3
{
\seq_set_split:Nnn \l_rima_input_seq { , } { #3 }
\dim_zero:N \l_rima_width_dim
\seq_map_inline:Nn \l_rima_input_seq
{
\str_if_eq:nnF { ##1 } { \dots }
{
\hbox_set:Nn \l_rima_entry_box { $##1$ }
\dim_set:Nn \l_rima_width_dim
{ \dim_max:nn { \l_rima_width_dim } { \box_wd:N \l_rima_entry_box } }
}
}
\dim_add:Nn \l_rima_width_dim { (#1 + \fboxsep) * 2}
\seq_set_map:NNn \l_rima_boxes_seq \l_rima_input_seq
{
\str_if_eq:nnTF { ##1 } { \dots }
{
\exp_not:n { \framebox[\l_rima_width_dim][#2] { \strut\dotfill } }
}
{
\exp_not:n { \framebox[\l_rima_width_dim][#2] { \strut$##1$ } }
}
}
\seq_use:Nn \l_rima_boxes_seq { \kern-\fboxrule }
}
\ExplSyntaxOff
\begin{document}
\rimatightboxes{b_{0},b_{1},b_{2},\dots,b_{st-1},b_{st}}
\bigskip
\rimatightboxes(l){b_{0},b_{1},b_{2},\dots,b_{st-1},b_{st}}
\bigskip
\rimatightboxes[3pt]{b_{0},b_{1},b_{2},\dots,b_{st-1},b_{st}}
\bigskip
\rimatightboxes[3pt](r){b_{0},b_{1},b_{2},\dots,b_{st-1},b_{st}}
\end{document}
(2)宽度通过可选参数设置(默认为 0.5 英寸)。第二个可选参数(在括号中)是内部对齐,默认为居中。
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\rimaboxes}{ O{0.5in} D(){c} m }
{
\rima_boxes:nnn { #1 } { #2 } { #3 }
}
\seq_new:N \l_rima_input_seq
\seq_new:N \l_rima_boxes_seq
\cs_new_protected:Npn \rima_boxes:nnn #1 #2 #3
{
\seq_set_split:Nnn \l_rima_input_seq { , } { #3 }
\seq_set_map:NNn \l_rima_boxes_seq \l_rima_input_seq
{
\str_if_eq:nnTF { ##1 } { \dots }
{
\exp_not:n { \framebox[#1][#2] { \strut\dotfill } }
}
{
\exp_not:n { \framebox[#1][#2] { \strut$##1$ } }
}
}
\seq_use:Nn \l_rima_boxes_seq { \kern-\fboxrule }
}
\ExplSyntaxOff
\begin{document}
\rimaboxes{b_{0},b_{1},b_{2},\dots,b_{st-1},b_{st}}
\bigskip
\rimaboxes(l){b_{0},b_{1},b_{2},\dots,b_{st-1},b_{st}}
\bigskip
\rimaboxes[.3in]{b_{0},b_{1},b_{2},\dots,b_{st-1},b_{st}}
\bigskip
\rimaboxes[.3in](r){b_{0},b_{1},b_{2},\dots,b_{st-1},b_{st}}
\end{document}
如您所见,最后两个例子并不十分合适。
答案4
\documentclass{article}
\usepackage{tabularx}
\setlength\extrarowheight{2pt}
\begin{document}
\noindent
\begin{tabularx}{\textwidth}{|*6{>{\centering$}X<{$}|}}
\hline
b_0&b_1&b_2&\cdots&b_{s.t-1}&b_{s.t}\tabularnewline
\hline
\end{tabularx}
\end{document}