以下是变体感叹号的一些代码,尽管它存在各种缺点(例如不可扩展性)
\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\newcommand\bigexclaim{%%
\tikz{%%
\node[circle,fill,inner sep=0.55pt] (A) at (0,0) {};
\coordinate (B) at (0,2.5ex) ;
\draw[fill,rounded corners=1.25pt] ($(A)!1.5pt!-23:(B)$) --
($(A)!1!-16:(B)$) --
($(A)!1!-30:(B)$) --
cycle;
}}
\newsavebox{\myexclamationptbox}
\savebox{\myexclamationptbox}{\bigexclaim}
\newcommand{\myexclamationpt}{\usebox{\myexclamationptbox}\kern-2pt}
\begin{document}
Prove\myexclamationpt \par
Prove!
\end{document}
对于数学模式,我们有各种格式化命令,例如 \mathbin
,, \mathrel
和\mathpunct
获取间距正确的围绕新的二元运算符、关系和标点符号。是否有类似的东西可以创建自定义标点符号?是否有需要考虑的粘合?或者这一切都只是猜测,直到你喜欢你所看到的东西?
答案1
至于前后间距,您自己判断。标志前可能需要留出一些小空间。
然而,您最明显缺少的是空间因子代码。
\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\newcommand\bigexclaim{%%
\tikz{%%
\node[circle,fill,inner sep=0.55pt] (A) at (0,0) {};
\coordinate (B) at (0,2.5ex) ;
\draw[fill,rounded corners=1.25pt] ($(A)!1.5pt!-23:(B)$) --
($(A)!1!-16:(B)$) --
($(A)!1!-30:(B)$) --
cycle;
}}
\newsavebox{\myexclamationptbox}
\savebox{\myexclamationptbox}{\bigexclaim}
\newcommand{\myexclamationpt}{\usebox{\myexclamationptbox}\kern-2pt}
\newcommand{\Smyexclamationpt}{\usebox{\myexclamationptbox}\kern-2pt
\spacefactor\sfcode`\!\relax}
\begin{document}
Prove\myexclamationpt{} Something after
Prove! Something after
\bigskip
Prove\Smyexclamationpt{} Something after
Prove! Something after
\bigskip\hrule\bigskip
\xspaceskip=20pt % just to emphasize the effect
Prove\myexclamationpt{} Something after
Prove! Something after
\bigskip
Prove\Smyexclamationpt{} Something after
Prove! Something after
\end{document}
在上半部分,我们有相同的输入,但有两个不同的版本,下面是“空间因子调整”的版本。
为了强调效果并更好地展示发生的情况,在下半部分排版了相同的输入,但\xspaceskip
设置为 20pt,这会放大 TeX 在标点符号后使用的额外空间。
答案2
我意识到这并没有回答你的问题的主要内容,但你可以用这个包使它具有可扩展性scalerel
。
\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{scalerel}
\newcommand\bigexclaim{%%
\tikz{%%
\node[circle,fill,inner sep=0.55pt] (A) at (0,0) {};
\coordinate (B) at (0,2.5ex) ;
\draw[fill,rounded corners=1.25pt] ($(A)!1.5pt!-23:(B)$) --
($(A)!1!-16:(B)$) --
($(A)!1!-30:(B)$) --
cycle;
}}
\newsavebox{\myexclamationptbox}
\savebox{\myexclamationptbox}{\bigexclaim}
\newcommand{\myexclamationpt}{%
\scaleto{\kern1pt\usebox{\myexclamationptbox}\kern-2pt}{2.5ex}}
\begin{document}
Prove\myexclamationpt \par
\scriptsize Prove\myexclamationpt \par
\tiny Prove\myexclamationpt \par
\normalsize Prove!
\end{document}