语境

语境

语境

我个人非常喜欢 Wolfram 语言,尤其是它的符号表示法。Wolfram 语言分别使用以下符号表示弧和边:

在此处输入图片描述

假设我希望输入一些 Mathematica 伪代码并使用这些约定而不是它们的“完整形式”(\[DirectedEdge]\[UndirectedEdge])。

然后我可以使用以下方法重新创建这些图标tikz

\newcommand{\ue}[1]{%
\begin{tikzpicture}[#1]%
\draw[fill = black] (.25ex,.25ex) circle (.3ex);
\draw[thick] (.55ex,.25ex) -- (1.55ex,.25ex);%
\draw[fill = black] (1.85ex, .25ex) circle (.3ex);%
\end{tikzpicture}%
}


\newcommand{\de}[1]{%
\begin{tikzpicture}[#1]%
\draw[fill = black] (.25ex,.25ex) circle (.3ex);
\draw[thick, ->] (.55ex,.25ex) -- (1.85ex,.25ex);%

\end{tikzpicture}%
}

ue其中和分别代表无向边de/有向边。虽然我更喜欢使用边和弧,但弧已经在命名空间中被使用了。

公平地说,使用这些符号在排版时看起来并不是最糟糕的事情:

\noindent\textbf{Adjacency}: if there exists an edge $e \in \mathbf{E}$, for $v_i, v_j \in \mathbf{V}$ such that $e$ is defined by $v_i$~\ue{}~$v_j$ (equivocally $v_j$ \ue{} $v_i$), then $v_i$ \& $v_j$ are said to be adjacent.

在此处输入图片描述

就我个人而言,我赞成使用这些符号,而不是明确说明两个顶点的(无)序集合,并且步行看起来也不错:

在此处输入图片描述

问题

虽然这些tikz绘图在给定情况下有效,但我注意到在字幕环境中,符号不再与文本居中。此外,间距可能是一个问题。

如何实现以下目标?

  • 自动绑定(前后字符元素必须在同一行)。

  • 自动居中到前一个/后一个字符。

  • 在数学环境中工作的能力。

  • 容易扩展。

另外,如果您能提供关于这些字形的总体使用意见,我们将不胜感激。说实话,它们有多丑?

答案1

您可以组合一些已经存在的符号。对于关系,您应该将定义放入\mathrel以获得正确的间距(如果您更喜欢使用二进制运算\mathbin,间距会略有不同)。这些命令涉及一些间距(\mkern),如果您进行大量缩放,则可能需要更改这些间距。它似乎适用于10pt11pt12pt

在此处输入图片描述

\documentclass[11pt]{article}
\usepackage[fleqn]{amsmath}%% align
\setlength\parindent{0pt}%% no indent
%% Definitions
\newcommand\de{\mathrel{\bullet\mkern-2.5mu{\rightarrow}}}
\newcommand\ue{\mathrel{\bullet\mkern-3mu{-}\mkern-3mu\bullet}}
\begin{document}
In displayed math
\begin{align}
  a &\ue b\\
  a &\de b
\end{align}
and inline: $v_i\ue v_j\ue v_h\ue v_k$.

\end{document}

相关内容