我正在尝试创建类似 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}
结果: