创建类似 stackoverflow 的标签

创建类似 stackoverflow 的标签

我正在尝试创建类似 stackoverflow 的标签。目前我使用\fbox{text}创建标签,效果不错,但并非所有框都具有相同的高度(似乎像“p”这样的字母会使框占用更多高度)。

有没有办法创建类似的东西\fbox但具有固定的高度?

(它们不需要有阴影或类似的东西。只需简单的框架即可)

答案1

您应该添加一个\strut,以便所有框都具有相同的最大高度和深度,否则框架框将取决于内容的高度。这意味着一个框a会得到一个小框,另一个框Xy会得到一个更高更深的框。\strut添加了一个不可见的规则,该规则具有当前字体大小的最大高度和深度。

\newcommand*{\tag}[1]{\fbox{#1\strut}}

可以使用该fancybox包创建更加精美的盒子。

答案2

使用以下方法可能是最简单的(尽管可能有点过头了)tikz

\documentclass{article}
\usepackage{tikz}
\newcommand{\mytag}[1]{
\begin{tikzpicture}[baseline={(TAG.base)}]
  \node[draw, minimum height=4ex] (TAG) {#1};
\end{tikzpicture}}

\begin{document}
\mytag{a tag}\mytag{Another Tag}
\end{document}

代码输出

这是过度的,因为\strut解决方案更简单。如果你想让盒子比fancybox包所能提供的更漂亮,这并不算过度。命令的更漂亮版本将允许你为节点命令指定更多参数:

\usetikzlibrary{shapes.geometric}

\newcommand{\mytag}[2][]{\begin{tikzpicture}[baseline={(TAG.base)}]
\node[draw, minimum height=4ex,#1] (TAG) {#2};
\end{tikzpicture}
}

\mytag[fill=red!40, very thick,double, rounded corners]{a tag}

\mytag[ellipse,draw,blue]{Another Tag}

代码输出

答案3

我不确定你是否需要为标签框架添加一些花哨的东西,或者你是否想添加一些图标(就像在实际的徽章中一样),但如果你这样做了,你可以使用mdframed包裹:

\documentclass[12pt,a4paper]{article}

\usepackage[framemethod=TikZ]{mdframed}

\begin{document}
\global\mdfdefinestyle{tag}{%
innerlinewidth=2pt,innerlinecolor=red,%
middlelinewidth=3pt,middlelinecolor=white,%
outerlinewidth=2pt,outerlinecolor=blue,%
}
\begin{mdframed}[userdefinedwidth=4cm,style=tag]
this is my tag
\end{mdframed}
\end{document}

输出结果如下:

在此处输入图片描述

需要补充的是,这也是基于 TikZ(framemethod=TikZ加载包时请参阅序言中的全局选项),并且示例中必须手动设置框的宽度,但我确信存在一种自动化的方法。

编辑:我不能就这样放任不管,只能摆弄代码来制作一个扩展版本,以在我们心爱的网站上重现徽章。:)样式仍然使用 TikZ 创建mdframed,奖章使用 TikZ 绘制。'徽章' 有两个参数:金属和徽章文本。尽情享受吧!:)

\documentclass[12pt,a4paper]{article}

\usepackage{tikz}
\usepackage[framemethod=TikZ]{mdframed}

\global\mdfdefinestyle{tag}{%
innerlinewidth=1pt,innerlinecolor=black,%
middlelinewidth=2pt,middlelinecolor=white,%
outerlinewidth=1pt,outerlinecolor=black,%
backgroundcolor=black,fontcolor=white,%
}

\colorlet{gold}{yellow}
\colorlet{silver}{gray!20}
\colorlet{bronze}{orange}

\newcommand{\badge}[2]{%
\begin{mdframed}[userdefinedwidth=5.5cm,style=tag]
\tikz{\draw[very thin,gray!75,fill=#1] (0,0) circle (1ex);\pgfmathsetmacro{\triangleside}{sqrt(3)}\draw[very thin,gray!75] (0,1ex) -- ++(240:\triangleside ex) -- +(0:\triangleside ex) -- cycle;} #2
\end{mdframed}
}

\begin{document}
\badge{gold}{This is my \TeX\ badge}
\badge{silver}{This is my \TeX\ badge}
\badge{bronze}{This is my \TeX\ badge}
\end{document} 

在此处输入图片描述

答案4

你不需要阴影或类似的东西,但你可以使用/误用keystroke

梅威瑟:

\documentclass{scrartcl}
\usepackage{keystroke}

\begin{document}

\keystroke{aa}
\keystroke{AA}
\keystroke{p}

\end{document}

结果: 在此处输入图片描述

相关内容