制作古籍批语来源样式(CSS已实现),想在LaTeX上也做出来

发布于 2023-03-27 12:51:55

Snipaste_2023-03-27_12-46-01.jpg
上图是CSS实现的效果,现在要在LaTeX里实现相同的效果。
我写的代码(第一种方案):

\newcommand\piyu[3]{{\kaishu\small\framebox{\colorbox{black}{\normalsize\color{white}#1}#2}#3}}

编译后效果:
Snipaste_2023-03-27_12-47-39.jpg
“张”字底部有空白。于是想用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}
}

编译后效果:
Snipaste_2023-03-27_12-49-00.jpg

现在两种方案都有问题,不知道怎么解决。请教老师有更好的方案吗?
全部代码:

\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}

查看更多

关注者
0
被浏览
1.1k
扬斯克
扬斯克 2023-03-27
这家伙很懒,什么也没写!

你的第一种方法我编译后没有发现问题,底部没有空白。
第二种可以稍作修改,把原命令替换成下面的。

\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}
}

结果如下图所示。
image.png

2 个回答
雾月
雾月 2023-03-28
这家伙很懒,什么也没写!

这是因为每个汉字的高度和深度并不一定相同。都加上一个 \strut 就行了。
如果觉得 \strut 太大,可以

\newcommand\mystrut{\vrule height .8em depth 0.2em width 0pt\relax}

自己调整 heightdepth 到一个合适的值就行了。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览