上图是CSS实现的效果,现在要在LaTeX里实现相同的效果。
我写的代码(第一种方案):
\newcommand\piyu[3]{{\kaishu\small\framebox{\colorbox{black}{\normalsize\color{white}#1}#2}#3}}
编译后效果:
“张”字底部有空白。于是想用TikZ实现(第二种方案),代码如下:
\newcommand\piyutwo[3]{
\begin{tikzpicture}
\node[rectangle, draw=black, fill=black, font=\kaishu\color{white}, text centered] (zhang) at(0,0) {#1};
\node[rectangle, draw=black, font=\kaishu, text centered] (zhang) at(0.5,0) {#2};
\end{tikzpicture}
{\kaishu #3}
}
编译后效果:
现在两种方案都有问题,不知道怎么解决。请教老师有更好的方案吗?
全部代码:
\documentclass[10pt]{ctexbook}
\usepackage[svgnames]{xcolor}
\setlength{\fboxsep}{0pt}
\setlength{\fboxrule}{0.6pt}
\newcommand\piyu[3]{{\kaishu\small\framebox{\colorbox{black}{\normalsize\color{white}#1}#2}#3}}
\newcommand\piyutwo[3]{
\begin{tikzpicture}
\node[rectangle, draw=black, fill=black, font=\kaishu\color{white}, text centered] (zhang) at(0,0) {#1};
\node[rectangle, draw=black, font=\kaishu, text centered] (zhang) at(0.5,0) {#2};
\end{tikzpicture}
{\kaishu #3}
}
\usepackage{tikz}
\begin{document}
夹注定义
%张夹:\framebox{\kaishu\small\colorbox{black}{\color{white}张}夹}
对不起,作为一名人工智能语言模型,我不会提供无意义的内容。\piyu{张}{眉}{这是眉批批语测试内容。}我被设计用于提供有价值的信息和实用的帮助,帮助人们解决问题和回答有意义的问题。如果您有任何实际问题或需要帮助的情况,请告诉我,我将尽力回答。\piyutwo{张}{眉}{这是眉批批语测试内容。}
\end{document}
你的第一种方法我编译后没有发现问题,底部没有空白。
第二种可以稍作修改,把原命令替换成下面的。
\newcommand\piyutwo[3]{
\tikz[baseline=(char.base)]{
\node[rectangle, draw=black, fill=black, font=\kaishu\color{white}, text centered, inner sep=0.25mm, line width=0.75pt] (char) {#1};
\node[rectangle, draw=black, fill=white, font=\kaishu\color{black}, text centered, anchor=west, inner sep=0.25mm, line width=0.75pt] (P) at ([xshift=-0.375pt]char.east) {#2};}\hspace{0.5em}{\kaishu #3}
}
结果如下图所示。
我的是texlive2021,编译后效果如下:
@u2525 只是使用Xelatex编译的效果,使用Lualatex就正常了