TikZ 日历 - 日节点下的线条

TikZ 日历 - 日节点下的线条

我已经修改了给出的代码成本加运费在回答这个问题关于当前日期节点。我希望在每一天的底部和左侧使用不同颜色(绿色和红色)的线条。但是,对于单个数字的日期,底线不能完全填充我想要加下划线的区域。

我认为我应该能够使用=修饰符 ond来插入零所在的缺失空格,但我无法让它工作。我需要修改 的定义来week list实现这一点吗?

\documentclass[border=10pt,multi,tikz]{standalone}
\usetikzlibrary{calendar}
\begin{document}
\begin{tikzpicture}
  \calendar (cal)
  [%
    week list,
    dates=2016-08-01 to 2016-10-last,
    day xshift=1.5em,
    month xshift=1pt,
    month label above left,
  ]
  if (weekend) [text=black!25]
  [%
  execute at end day scope={%
      \draw[red] 
      (cal-\%y0-\%m0-\%d0.north east) -- 
      (cal-\%y0-\%m0-\%d0.south east);
  }][%
  execute at end day scope={%
      \draw[green] 
      (cal-\%y0-\%m0-\%d0.south east) -- 
      (cal-\%y0-\%m0-\%d0.south west);
  }];
\end{tikzpicture}
\end{document}

[注:这是关于修改同一代码的两个问题之一。另一个是这里

答案1

1. 方法

您可以使用 if 语句来检查天数是否小于 10,然后增加行的长度。

代码片段(使用 tikzlibrary calc):

\ifnum \%d0<10
    \draw[yellow] 
    (cal-\%y0-\%m0-\%d0.south east) -- 
    ($(cal-\%y0-\%m0-\%d0.south west) + (-1.6mm,0)$);
\else
    \draw[green] 
    (cal-\%y0-\%m0-\%d0.south east) -- 
    (cal-\%y0-\%m0-\%d0.south west);
\fi

但结果即使是绿色的原始线也太长了(看 9):

在此处输入图片描述

2. 方法

因此,另一种方法是对该线使用固定长度:

\documentclass[border=10pt,multi,tikz]{standalone}
\usetikzlibrary{calendar}

\begin{document}
\begin{tikzpicture}
    \calendar (cal)
    [%
        week list,
        dates=2016-08-01 to 2016-10-last,
        day xshift=1.5em,
        month xshift=1pt,
        month label above left,
    ]
    if (weekend) [text=black!25]
    [%
    execute at end day scope={%
        \draw[red] 
        (cal-\%y0-\%m0-\%d0.north east) -- 
        (cal-\%y0-\%m0-\%d0.south east);
    }][%
    execute at end day scope={%
        \draw[green] 
        (cal-\%y0-\%m0-\%d0.south east) --++ 
        (-5.2mm,0);
    }];
\end{tikzpicture}
\end{document}

结果:

在此处输入图片描述

相关内容