第二版

第二版

我有以下命令:

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

结果第三版

相关内容