Excel的行高、列宽单位不统一?还是LaTeX靠谱

想要生成田字格、米字格、带拼音标准,方便小学生书法和练字。Word,Excel之类所见即所得是最容易相当的方式。但它们处理带田字格之类背景时,如果没有专用模板、奇奇怪怪的插件,使用起来会碰到各种问题。比如,Word里面用表格、打虚线,然后文字可以表格中或漂浮的文本框、艺术字,但问题是文字和网格的对齐非常困难,不容易调整;Excel里面也可以调网格,但Excel就很难所见即所得,打印出来文字和网格总会发生意想不到的漂移。——而且顺便发现Excel中还有本文标题中提到的“问题”(这个问题是视图没有切换到page layout导致的,这是本文解释的初衷)。

大家都以所接触的世界为“黑箱”(不看文档的情况下),通过各种互动和观察,尝试理解“黑箱”的工作原理。尝试用Excel制作田字格的时候,发现。
在这里插入图片描述但对比下来,还是用LaTeX生成田字格最合适。因为Excel并非严格所见即所得,看到的并非能够严格按照所见打印出来的。Office局限性足见一斑。而用LaTeX生成类似的效果明显更好:

本来这篇博客只是想解释一下,Excel中并不存在行高、列宽单位不统一的问题,顺便吐糟了一下Office总是不如LaTeX。于是想到不妨用LaTeX来做!而且搜索、加上特种大语言模型齐上阵,调整代码,很快就得到了想要的效果。——附带证明了LaTeX完成这类任务,简直就是神一样的存在!秒杀Office和各种插件及技巧。我搜索的时候发现有秀出LaTeX效果的网友,却不肯分享好用的代码。我对此深不以为然。所以,调整出好用的代码之后,我特地把代码和效果都分享出来,方便其他人用。为什么?这些主要是方便中国的孩子,以及对中国语言文字感兴趣的人。当然要免费分享。

在这里插入图片描述下面的代码是在CTeX 3.x里面依次使用 LaTeX, dvips, ps2pdf编译得到PDF;其它方式或许也能用。但我没有专门尝试。

\documentclass{article}
\usepackage{ctex}
\usepackage{tikz}
\usepackage{geometry}
\usepackage{microtype}
\usepackage{xstring} 
\usepackage{xpinyin}

\geometry{a4paper,landscape,margin=1cm}

\newcommand\pygrid[2]{%
\fontsize{100}{100}
\begin{tikzpicture}[baseline=(current bounding box.south)]%
  \tikzstyle help lines=[color=red!90,thin]
  \path[use as bounding box]
    (0,0) rectangle (1em,1.6em);
  \draw[help lines,step=0.5em]
    (0,0) grid (1em,1em);
  \draw[help lines,dashed]
    (0,0) -- (1em,1em)  (0,1em) -- (1em,0);
  \draw[help lines] (0em,1em) -- (0em,1.6em)
    (0em,1.6em) -- (1em,1.6em) (1em,1.6em) -- (1em,1em);
  \draw[help lines,dashed] (0em,1.2em) -- (1em,1.2em);
  \draw[help lines,dashed] (0em,1.4em) -- (1em,1.4em);
  \node[inner sep=0pt,anchor=south west]
    (char) at (0em,0.06em)[font=\kaishu, scale=0.92] {#1};      
%  
%  % 拼音标注
%  \node[anchor=south, font=\small, yshift=0.4em]
%  (char)  at (0.5em,1.6em) {#2};    
\end{tikzpicture}
}

% \grid for a single character
\newcommand\grid[1]{%
\fontsize{100}{100}
  \begin{tikzpicture}[baseline=(char.base)]
    \tikzstyle help lines=[color=red!90,thin]
    \path[use as bounding box]
      (0,0) rectangle (1em,1em);
    \draw[help lines,step=0.5em]
      (0,0) grid (1em,1em);
    \draw[help lines,dashed]
      (0,0) -- (1em,1em)  (0,1em) -- (1em,0);
    \node[inner sep=0pt,anchor=base west]
      (char) at (0em,0.12em) [font=\kaishu, scale=0.92]{#1}; %调整了位置
  \end{tikzpicture}%
}

% \gridraiseamount is a font-specific value
\newcommand\gridraiseamount{0.12em}

\makeatletter
\newcommand\sgrid[1]{%
  \@for\nextchar:=#1\do{\grid{\nextchar}}% 使用 @for 循环
}
\makeatother

\begin{document}
\centering
\grid{}\grid{}\grid{}\grid{}\grid{}
\\[30pt]
\pygrid{\xpinyin{}{ni3}}
{2pt}
\pygrid{\xpinyin{}{zhen1}}
{2pt}
\pygrid{\xpinyin{}{li4}}
{2pt}
\pygrid{\xpinyin{}{hai}}
{2pt}
\\[30pt]
\sgrid{,,,}
\end{document}

可是,上面这些跟只能用 LaTeX  ⁣ ⁣ ⁣ ϵ \LaTeX\!\!\! \qquad\epsilon LATEXϵ  ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ 3 \!\!\!\!\!\!\!3 3: X e  ⁣ ⁣ \rm{Xe}\!\! Xe LaTeX \LaTeX LATEX 编译的 hanzibox:田字格-米字格汉字练习宏包比起来,又孤陋寡闻小儿科。不过这里就不扯太远了。总而言之,本来是研究Office实现相关功能的,结果发现还是用LaTeX更方便。Office相关的探讨继续如下:

使用应用软件而不看文档、不跟别人交流,也会有类似问题。探索黑箱的网友很多。但有些分享出来的经验,可能是误读,盲人摸象。比如:

在这里插入图片描述

看完这个,直觉,Excel 也是需要打印的、微软虽然Office在字处理方面比LaTeX口碑差,但还不至于到尺寸还没有整明白的地步。实际上,Word、Excel 都可以显示Ruler或标尺(直尺?)出来的。但Excel需要在“页面布局” Page Layout视图模式下。普通视图下面,视图选项卡下面Ruler\标尺\直尺是灰色的,无法勾选或取消而已。

在“视图”View选显卡,直尺\标尺Ruler勾选的情况下,显示标尺,这时候,再选择特定行、特定列,行高或者列高的单位就是统一的cm之类的了:
在这里插入图片描述所以,不是Excel行高和列宽的单位不统一,而是在特定视图的情况下,的确存在那种幻觉;转变一下视图就可以了。

为什么会要求在特定视图下才能够显示统一的单位呢?这个我还不懂,有谁知道答案?

另外,对hanzibox(西北农林大学),我觉得惊喜的同时还是有些失望,因为对LaTeX发行版的要求条件太过苛刻了,这会导致使用宏包的时候软件配置方面各种苛刻条件,我是更新了CTeX3.1所有宏包犹不够、还把TeXLive2024最新版也安装了之后,把按照一般思路调试的TeX文件彻底抛弃、再完全用hanzibox作者的代码一点点修改调整,才战战兢兢好用,但调整过程中仍然碰到各种问题,包括突然又不能编译之类;但对彻底共享源代码软件要求这么高显然是不对的:

基于LaTeX3的带注音和译文的汉字练习宏包

hanzibox是一个用LaTeX3开发的LaTeX宏包,它提供了\hanzibox\hanzidialog
\writegrid三个个命令。这三个命令分别用于排版汉字学习中带有或不带田字格、米字格等背景格子的汉字,并可以根据需要在汉字正上方显示拼音,在正下方显示译文。其中,\hanzibox命令能够根据汉字自动调用xpinyin宏包的\xpinyin*命令实现汉字注音。并且\hanzibox命令提供了\hanzibox*星号版本,其注音功能是通过自动调用xpinyin宏包的\pinyin命令实现的。\hanzidialog命令的注音功能是通过在拼音选项中手动插入xpinyin宏包\pinyin命令实现的。\writegrid命令用于排版作文题目的答题格子纸。

hanzibox 是一个用于学习汉字书写与发音的工具,可以用于汉字学习教案、演示文稿、习题册等文档工作。

该宏包的开发灵感源自Jan Vorisek的hanzibox宏包。但对\hanzibox\hanzidialog命令重新进行了设计,并参考zitie字贴宏包重新用l3draw宏包设计了背景格子。同时,新的宏包也提供了更多命令选项和参数,以期更好地控制排版结果。

目前,hanzibox.sty宏包仅支持XeTeX编译引擎,并且只支持UTF-8编码的LaTeX源文件。

可以通过阅读宏包手册(中文)以也解该宏包更多的使用细节和使用样例。 参与贡献
github仓库: (1). 仓库地址: hanzibox-l3 (2). Issues和PR: issue or pull request.
gitee仓库: (1). 仓库地址: hanzibox-l3 (2). Issues and PR: issue or pull request.
Copyright and Licence

Copyright © 2020-2022 by Nan Geng nangeng@nwafu.edu.cn

This work may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3c of this license
or (at your option) any later version. This version of this license is
in http://www.latex-project.org/lppl/lppl-1-3c.txt and the latest
version of this license is in http://www.latex-project.org/lppl.txt
and version 1.3 or later is part of all distributions of LaTeX version
2005/12/01 or later.

This work has the LPPL maintenance status “maintained”.

The Current Maintainer of this work is Nan Geng.

This package consists of the file hanzibox.dtx,
and the derived files hanzibox.sty,
hanzibox.pdf,
hanzibox.ins,
README.md (this file).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/982070.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++学习之路,从0到精通的征途:入门基础

目录 一.C的第一个程序 二.命名空间 1.namespace的价值 2.命名空间的定义 3.命名空间使用 三.C的输入与输出 1.<iostream> 2.流 3.std(standard) 四.缺省参数 1.缺省参数的定义 2.全缺省/半缺省 3.声明与定义 ​五.函数重载 1.参数个数不同 2.参数类型不…

rust学习笔记12-hashmap与1. 两数之和

rust集合中也有hashmap&#xff0c;昨天已经提到过&#xff0c;学过java同学再熟悉不过了&#xff0c;一道经典面试题问hashmap在java1.8的实现原理&#xff0c;数组哈希表红黑树&#xff0c;rust中hashmap在功能上和java一样&#xff0c;但实现上有很大差别&#xff0c;它的基…

通过多线程同时获取H264和H265码流

目录 一.RV1126 VI采集摄像头数据并同时编码H264、H265的大概流程​编辑​编辑 1.1初始化VI模块&#xff1a; 1.2H264、H265的VENC模块初始化&#xff1a; 1.3VI分别绑定H264的VENC层和H265的VENC层&#xff1a; ​​​​​​​1.4开启H264线程采集H264的VENC数据&#xff…

SpringBoot为什么要禁止循环依赖?

大家好&#xff0c;我是锋哥。今天分享关于【SpringBoot为什么要禁止循环依赖?】面试题。希望对大家有帮助&#xff1b; SpringBoot为什么要禁止循环依赖? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring Boot 和 Spring 框架之所以要避免循环依赖&#xf…

The Rust Programming Language 学习 (三)

所有权 所有权&#xff08;系统&#xff09;是 Rust 最为与众不同的特性&#xff0c;它让 Rust 无需垃圾回收器&#xff08;garbage collector&#xff09;即可保证内存安全。因此&#xff0c;理解 Rust 中所有权的运作方式非常重要。 这里是非常重非常重的一个知识点,这里一…

基于物联网技术的电动车防盗系统设计(论文+源码)

1总体设计 本课题为基于物联网技术的电动车防盗系统&#xff0c;在此将整个系统架构设计如图2.1所示&#xff0c;其采用STM32F103单片机为控制器&#xff0c;通过NEO-6M实现GPS定位功能&#xff0c;通过红外传感器检测电瓶是否离开位&#xff0c;通过Air202 NBIOT模块将当前的数…

雷池WAF的为什么选择基于Docker

Docker 是一种开源的容器化平台&#xff0c;可以帮助开发人员将应用程序及其所有依赖项打包到一个称为容器的独立、可移植的环境中。Docker 的核心概念包括以下几点&#xff1a; 容器&#xff1a;Docker 使用容器来封装应用程序及其依赖项&#xff0c;使其能够在任何环境中都能…

解决docker认证问题 failed to authorize: failed to fetch oauth token

报错信息[bash1]解决方案 全局代理打开“buildkit”: false &#xff0c;见[图1] [bash1] >docker build -t ffpg . [] Building 71.8s (3/3) FINISHED docker:desktop-linux> [internal] load bui…

LINUX网络基础 [一] - 初识网络,理解网络协议

目录 前言 一. 计算机网络背景 1.1 发展历程 1.1.1 独立模式 1.1.2 网络互联 1.1.3 局域网LAN 1.1.4 广域网WAN 1.2 总结 二. "协议" 2.1 什么是协议 2.2 网络协议的理解 2.3 网络协议的分层结构 三. OSI七层模型&#xff08;理论标准&#xff09; …

【Docker】容器安全之非root用户运行

【Docker】容器安全之非root用户运行 1. 场景2. 原 Dockerfile 内容3. 整改结果4. 非 root 用户带来的潜在问题4.1 文件夹读写权限异常4.2 验证文件夹权限 1. 场景 最近有个项目要交付&#xff0c;第三方测试对项目源码扫描后发现一个问题&#xff0c;服务的 Dockerfile 都未指…

亚马逊云科技Marketplace(中国区)上架专业服务产品, “云生态连接器”价值凸显

近日&#xff0c;由西云数据运营的亚马逊云科技Marketplace&#xff08;中国区&#xff09;正式支持专业服务产品。此次发布将大幅简化企业对云专业服务的采购流程&#xff0c;实现云软件从规划、部署到支持的全生命周期管理&#xff0c;同时也为合作伙伴提供了更多的销售机会。…

鸿蒙启动页开发

鸿蒙启动页开发 1.1 更改应用名称和图标 1.更改应用图标 找到moudle.json5文件&#xff0c;找到应用启动的EntryAbility下面的icon,将原来的图标改成自己设置的即可 2.更改应用名称 3.效果展示 2.1 广告页面开发 3.1 详细介绍 3.1.1 启动页面 import { PrivacyDialog } fr…

HCIA—IP路由静态

一、概念及作用 1、概念&#xff1a;IP路由是指在IP网络中&#xff0c;数据从源节点到目的节点所经过的路径选择和数据转发的过程。 2、作用 ①实现网络互联&#xff1a;使不同网段的设备能够相互通信&#xff0c;构建大规模的互联网络 ②优化网络拓扑&#xff1a;根据网络…

【计算机网络入门】初学计算机网络(十一)重要

目录 1. CIDR无分类编址 1.1 CIDR的子网划分 1.1.1 定长子网划分 1.1.2 变长子网划分 2. 路由聚合 2.1 最长前缀匹配原则 3. 网络地址转换NAT 3.1 端口号 3.2 IP地址不够用&#xff1f; 3.3 公网IP和内网IP 3.4 NAT作用 4. ARP协议 4.1 如何利用IP地址找到MAC地址…

机器视觉开发教程——封装Halcon通用模板匹配工具【含免费教程源码】

目录 引言前期准备Step1 设计可序列化的输入输出集合【不支持多线程】Step2 设计程序框架1、抽象层【IProcess】2、父类【HAlgorithm】3、子类【HFindModelTool】 Step3 设计UI结果展示 引言 通过仿照VisionPro软件二次开发Halcon的模板匹配工具&#xff0c;便于在客户端软件中…

【Linux跬步积累】—— 线程池详解(有源代码)

文章目录 一、如何实现一个线程1、基本结构2、实现成员函数3、演示4、代码总汇Thread.hppMain.cc 二、如何封装线程池1、设计成员变量2、构造函数与析构函数3、初始化4、启动与回收5、主线程放入任务6、子线程读取任务7、终止线程池 三、测试四、线程池总代码1、ThreadPool.hpp…

【Linux】自定协议和序列化与反序列化

目录 一、序列化与反序列化概念 二、自定协议实现一个加法网络计算器 &#xff08;一&#xff09;TCP如何保证接收方的接收到数据是完整性呢&#xff1f; &#xff08;二&#xff09;自定义协议 &#xff08;三&#xff09;自定义协议的实现 1、基础类 2、序列化与反序列…

hive之LEAD 函数详解

1. 函数概述 LEAD 是 Hive 中的窗口函数&#xff0c;用于获取当前行之后指定偏移量处的行的值。常用于分析时间序列数据、计算相邻记录的差异或预测趋势。 2. 语法 LEAD(column, offset, default) OVER ([PARTITION BY partition_column] [ORDER BY order_column [ASC|DESC]…

ZYNQ-PL学习实践(二)按键和定时器控制LED闪烁灯

ZYNQ-PL学习实践&#xff08;二&#xff09;按键和定时器控制LED闪烁灯&#xff09; 1 创建工程2 verilog 代码3 约束4 综合5 生成bit总结 1 创建工程 2 verilog 代码 添加key_led.v 文件&#xff0c; module key_led(input sys_clk , //系统时钟50MHzinput …

【Python爬虫】利用代理IP爬取跨境电商AI选品分析

引言 随着DeepSeek的流行&#xff0c;越来越多的用户开始尝试将AI工具融入到日常工作当中&#xff0c;借助AI的强大功能提高工作效率。最近又掀起了一波企业出海的小高潮&#xff0c;那么如果是做跨境电商业务&#xff0c;怎么将AI融入工作流中呢&#xff1f;在做跨境电商的时候…