我有以下命令:
\documentclass[a4paper,11pt]{article}
\usepackage[margin=2.5cm, vmargin={2.5cm,1.5cm}]{geometry}
\usepackage[table]{xcolor}
\usepackage{tabularx}
\newcounter{som}
\newcounter{sub}[som]
\definecolor{Som}{RGB}{240,185,134}
\newcommand{\opg}[2]{%
\par\noindent
\begin{tabularx}{\linewidth}{@{} p{1.0cm} X @{}}
\parbox[t]{0.35cm}{
\begin{tabularx}{0.5cm}{@{} !{\color{white}\vrule} c !{\color{white}\vrule} >{\columncolor{Som}}c X @{}}
\arrayrulecolor{white}\cline{1-1}
\makebox[0.1cm]{\ } &
\makebox[0.1cm]{\color{white}\textbf{\arabic{som}}} \cr
\arrayrulecolor{white}\cline{1-1} \arrayrulecolor{Som}\cline{2-2}
\end{tabularx}} &
#2
\end{tabularx}
}
\begin{document}
\opg{O}{bla bla bla ....}
\end{document}
现在该线应该以一个带框的字母(#1
)和一个数字(由给出som
)开头,1cm 之后应该会出现 bla bla bla 文本。
确实如此,但是字母和数字没有在框的中心对齐。
盒子应该是固定宽度,所以当som
变为 10 时,它将是相同的盒子宽度。
我尝试了很多方法,但效果并不好,也不起作用。请帮忙。
答案1
我不确定结果应该是什么。以下示例解决了以下问题:
表格中添加了背景。然后可以看到白线。
带白色边框的盒子用 完成
\fcolorbox
。盒子内容的宽度设置为 的宽度10
,内容水平居中。两个接触的盒子的高度和深度相同。避免使用内部表格,并且框中的文本和下一列的第一行现在在基线垂直对齐。
示例文件:
\documentclass[a4paper,11pt]{article}
\usepackage[margin=2.5cm, vmargin={2.5cm,1.5cm}]{geometry}
\usepackage[table]{xcolor}
\usepackage{tabularx}
\newcounter{som}
\newcounter{sub}[som]
\definecolor{Som}{RGB}{240,185,134}
\newdimen\opgBoxWidth
\newcommand{\opg}[2]{%
\par
\noindent
\settowidth\opgBoxWidth{10}%
\colorbox{black!10!white}{%
\begin{tabularx}{\dimexpr\linewidth-2\fboxsep\relax}{@{} l X @{}}%
\bfseries
\fcolorbox{white}{Som}{%
\color{white}%
\makebox[\opgBoxWidth]{\vphantom{\thesom}#1}%
}%
\kern-\fboxrule
\fcolorbox{white}{Som}{%
\color{white}%
\makebox[\opgBoxWidth]{\vphantom{#1}\thesom}%
}%
&%
#2%
\end{tabularx}%
}%
}
\begin{document}
\opg{O}{bla bla bla \dots}
\setcounter{som}{10}
\opg{A}{bla bla bla \dots}
\end{document}
第二版
但是,数字的水平位置不太清楚。宽字母的宽度M
用作字母框的宽度。
\documentclass[a4paper,11pt]{article}
\usepackage[margin=2.5cm, vmargin={2.5cm,1.5cm}]{geometry}
\usepackage{array}
\usepackage[table]{xcolor}
\usepackage{tabularx}
\newcounter{som}
\newcounter{sub}[som]
\definecolor{Som}{RGB}{240,185,134}
\newdimen\opgBoxLetterWidth
\newdimen\opgBoxNumberWidth
\newcommand{\opg}[2]{%
\par
\noindent
\settowidth\opgBoxLetterWidth{\bfseries M}%
\settowidth\opgBoxNumberWidth{\bfseries 10}%
\colorbox{black!10!white}{%
\begin{tabularx}{\dimexpr\linewidth-2\fboxsep\relax}{
@{}
l
>{\centering}p{\opgBoxNumberWidth}
@{\kern1cm}
X
@{}
}%
\bfseries
\fcolorbox{Som}{white}{%
\color{Som}%
\makebox[\opgBoxNumberWidth]{\vphantom{\thesom}#1}%
}%
&
\bfseries
\thesom
&%
#2%
\end{tabularx}%
}%
}
\begin{document}
\opg{O}{bla bla bla \dots}
\setcounter{som}{10}
\opg{A}{bla bla bla \dots}
\end{document}
第三个版本
\documentclass[a4paper,11pt]{article}
\usepackage[margin=2.5cm, vmargin={2.5cm,1.5cm}]{geometry}
\usepackage{array}
\usepackage[table]{xcolor}
\usepackage{tabularx}
\newcounter{som}
\newcounter{sub}[som]
\definecolor{Som}{RGB}{240,185,134}
\newdimen\opgBoxWidth
\newcommand{\opg}[2]{%
\par
\noindent
\settowidth\opgBoxWidth{\bfseries 10}%
\colorbox{black!10!white}{%
\begin{tabularx}{\dimexpr\linewidth-2\fboxsep\relax}{
@{}
l
@{\kern1cm}
X
@{}
}%
\bfseries
\fcolorbox{Som}{white}{%
\color{Som}%
\makebox[\opgBoxWidth]{\vphantom{\thesom}#1}%
}%
\kern-\fboxrule
\advance\fboxsep\fboxrule
\colorbox{Som}{%
\color{white}%
\makebox[\opgBoxWidth]{\vphantom{#1}\thesom}%
}%
&%
#2%
\end{tabularx}%
}%
}
\begin{document}
\opg{O}{bla bla bla \dots}
\setcounter{som}{10}
\opg{A}{bla bla bla \dots}
\end{document}