如何输出一个行间的只显示计数器的数字的盒子

发布于 2023-04-21 22:49:10

我希望输出一个行间的彩色盒子,盒子没有标题,盒子内容只含有与 section 绑定的计数器的数字并且该盒子的编号也就是盒子内容可以作为标签在之后文章中可以引用如下

9f473d0dca9bc4b7cdffefaed85f8b49.png
当我需要在某一段文字之前调用这个盒子时直接输入一个提前自定义的名称就能如上输出这个盒子,编号(也就是盒子的全部内容)按照 section 绑定显示,比如我把这个盒子的命令定义为

\dy

则以上效果只需输入如下代码就能显示:

\dy 这是一段文字

\dy 这是一段文字

\dy 这是一段文字

之后文章中还可以引用1.1 ,1.2...

大致就是这样的需求,我想到用 tcolorbox 或者其他盒子,或者用其他方式,请问一下该怎样实现?

查看更多

关注者
0
被浏览
1k
雾月
雾月 2023-04-22
这家伙很懒,什么也没写!

有多种实现方式。可以用 xcolor\fcolorbox,也可以用 tcolorbox

\documentclass{ctexart}
\usepackage{xcolor}
% \usepackage{hyperref}

\definecolor{dyframecol}{HTML}{8080FF}
\definecolor{dybackcol}{HTML}{E6E6FF}
\newcounter{dycnt}

%% 第一种
\counterwithin{dycnt}{section}
\renewcommand{\thedycnt}{\arabic{section}.\arabic{dycnt}}
\newcommand{\dy}{\leavevmode\refstepcounter{dycnt}\nobreak
  \fcolorbox[HTML]{8080FF}{E6E6FF}{\thedycnt}~}

%% 第二种
\usepackage{tcolorbox}
\newtcbox[use counter=dycnt, number within=section,
    number freestyle=\noexpand\arabic{section}:\noexpand\arabic{dycnt}]
  {\Dybox}[1][]
  {colframe=dyframecol, colback=dybackcol,
    boxrule=0.4pt, boxsep=0pt, left=3pt,right=3pt,top=3pt,bottom=3pt,
    sharp corners, on line, after=~, #1}
% \tcbset{IfBlankF/.code n args={2}{\ifblank{#1}{}{\pgfkeysalso{#2}}}} % 如果比TeXLive2023旧,加上这个
\newcommand{\Dy}[1][]{\Dybox[IfBlankF={#1}{label={#1}}]{\thedycnt}\ignorespaces}

\begin{document}

\section{节}

\dy \label{dy:1}这是一段文字

\dy 这是一段文字 \ref{dy:4}

\Dy 这是一段文字 \ref{dy:1}

\Dy[dy:4] 这是一段文字

\end{document}

image.png

用法有一点点区别。但效果都是一样的。

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览