将文本作为图像的参数

将文本作为图像的参数

我简单修改了这个链接中的时钟代码:

这是我的代码:

\NewDocumentCommand{\Clock}{O{1cm}O{\large}O{cyan}O{\textbf{}}}{%
\def\radius{#1}%
\begin{tikzpicture}[line cap=rect,line width=0.055*\radius]
\filldraw [fill=#3] (0,0) circle [radius=\radius] node {O\textbf{}};
\foreach \angle [count=\xi] in {60,30,...,-270}
{
  \draw[line width=1pt] (\angle:0.9*\radius) -- (\angle:\radius);
  \node[font=#2] at (\angle:0.68*\radius) {};
}
\foreach \angle in {0,90,180,270}
  \draw[line width=0.04*\radius] (\angle:0.82*\radius) -- (\angle:\radius);
\end{tikzpicture}%
}

我试图在这两行中将我的文本作为参数:

\NewDocumentCommand{\Clock}{O{1cm}O{\large}O{cyan}O{\textbf{}}}
\filldraw [fill=#3] (0,0) circle [radius=\radius] node {O\textbf{}};

使用 O\textbf{}

以下是我使用此代码的方法:

 \quad\Clock[0.9 cm][\footnotesize][green][\textbf{my text here}

结果我看到了这张图片: 在此处输入图片描述

然而O,我不想在时钟中间看到“我的文本在这里”,我该怎么做呢?

答案1

在命令的定义中,我简单地用\Clock替换了第 4 个参数。O{\textbf{}}O{}

正如 David Carlisle 在您的问题评论中所说,替换node {O\textbf{}};node {\textbf{#4}};(因此时钟中的文本始终为粗体)。这里#4是调用时使用的第 4 个参数\Clock

最后,我将你调用时使用的文本“my text here”改为\Clock“my text here”,因为“my text here”太长了。

\documentclass[11pt]{article}

\usepackage{tikz}

\NewDocumentCommand{\Clock}{O{1cm}O{\large}O{cyan}O{}}{%
\def\radius{#1}%
\begin{tikzpicture}[line cap=rect,line width=0.055*\radius]
\filldraw [fill=#3] (0,0) circle [radius=\radius] node [align=center] {\textbf{#4}};
\foreach \angle [count=\xi] in {60,30,...,-270}
{
  \draw[line width=1pt] (\angle:0.9*\radius) -- (\angle:\radius);
  \node[font=#2] at (\angle:0.68*\radius) {};
}
\foreach \angle in {0,90,180,270}
  \draw[line width=0.04*\radius] (\angle:0.82*\radius) -- (\angle:\radius);
\end{tikzpicture}%
}

\begin{document}

\Clock\quad\Clock[0.9cm][\footnotesize][green][my text]

\end{document}

此代码适用于最新的 LaTeX(2022 版本之前,请\usepackage{xparse}在前言中添加\NewDocumentCommand)。

您将获得: 在此处输入图片描述

相关内容