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}

可以上面這些,跟 hanzibox:田字格-米字格漢字練習宏包比起來,又孤陋寡聞小兒科。

不過這里就不扯太遠了。總而言之,本來是研究Office實現相關功能的,結果發現還是用LaTeX更方便。Office相關的探討繼續如下:

使用應用軟件而不看文檔、不跟別人交流,也會有類似問題。探索黑箱的網友很多。但有些分享出來的經驗,可能是誤讀,盲人摸象。比如:

在這里插入圖片描述

看完這個,直覺,Excel 也是需要打印的、微軟雖然Office在字處理方面比LaTeX口碑差,但還不至于到尺寸還沒有整明白的地步。實際上,Word、Excel 都可以顯示Ruler或標尺(直尺?)出來的。但Excel需要在“頁面布局” Page Layout視圖模式下。普通視圖下面,視圖選項卡下面Ruler\標尺\直尺是灰色的,無法勾選或取消而已。

在“視圖”View選顯卡,直尺\標尺Ruler勾選的情況下,顯示標尺,這時候,再選擇特定行、特定列,行高或者列高的單位就是統一的cm之類的了:
在這里插入圖片描述所以,不是Excel行高和列寬的單位不統一,而是在特定視圖的情況下,的確存在那種幻覺;轉變一下視圖就可以了。

為什么會要求在特定視圖下才能夠顯示統一的單位呢?這個我還不懂,有誰知道答案?

另外,對hanzibox(西北農林大學),我還是有些失望,因為對LaTeX發行版的要求條件太過苛刻了:

基于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).

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/bicheng/72395.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72395.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72395.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[免費]微信小程序(校園)二手交易系統(uni-app+SpringBoot后端+Vue管理端)【論文+源碼+SQL腳本】

大家好,我是java1234_小鋒老師,看到一個不錯的微信小程序(校園)二手交易系統(uni-appSpringBoot后端Vue管理端),分享下哈。 項目視頻演示 【免費】微信小程序(校園)二手交易系統(uni-appSpringBoot后端Vue管理端) Java畢業設計_嗶哩嗶哩_bi…

【詳細講解在STM32的UART通信中使用DMA機制】

詳細講解在STM32的UART通信中使用DMA機制 目錄 詳細講解在STM32的UART通信中使用DMA機制一、DMA機制概述二、DMA在UART中的作用三、DMA的配置步驟四、UART初始化與DMA結合五、DMA傳輸的中斷處理六、DMA與中斷的結合使用七、注意事項與常見問題八、代碼示例九、總結 一、DMA機制…

M系列芯片 MacOS 在 Conda 環境中安裝 TensorFlow 2 和 Keras 3 完整指南

目錄 1. 引言2. 環境準備3. 安裝 TensorFlow 和必要依賴4. 結語Reference 1. 引言 Keras 是搞深度學習很可愛的工具,其友好的接口讓我總是將其作為搭建模型原型的首選。然而,當我希望在 M 系列芯片的MacBook Pro上使用 Keras時,使用Conda和P…

清華北大DeepSeek六冊

「清華北大-Deepseek使用手冊」 鏈接:https://pan.quark.cn/s/98782f7d61dc 「清華大學Deepseek整理) 1-6版本鏈接:https://pan.quark.cn/s/72194e32428a AI學術工具公測鏈接:https://pan.baidu.com/s/104w_uBB2F42Da0qnk78_ew …

paddlehub hub TypeError 錯誤

pip install paddlehub hub install chinese_ocr_db_crnn_mobile 提示錯誤: TypeError: Descriptors cannot be created directly. If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc > 3.19.0…

零信任沙箱:為網絡安全筑牢“隔離墻”

在數字化浪潮洶涌澎湃的今天,網絡安全如同一艘船在波濤洶涌的大海中航行,面臨著重重挑戰。數據泄露、惡意軟件攻擊、網絡釣魚等安全威脅層出不窮,讓企業和個人用戶防不勝防。而零信任沙箱,就像是一座堅固的“隔離墻”,…

【String】917. 僅僅反轉字母

917. 僅僅反轉字母 - 力扣(LeetCode) 使用雙指針,一個指針指向s的開始,一個指向s的末尾,同時遍歷即可。

大語言模型學習

大語言模型發展歷程 當前國內外主流LLM模型 ?一、國外主流LLM? ?LLaMA2? Meta推出的開源模型,參數規模涵蓋70億至700億,支持代碼生成和多領域任務適配?57。衍生版本包括Code Llama(代碼生成優化)和Llama Chat(對…

3dsmax烘焙光照貼圖然后在unity中使用

效果預覽 看不清[完蛋!] 實現步驟 使用 軟件 軟體名稱地址photoshophttps://www.adobe.com/products/photoshop.htmlunity3Dhttps://unity.com/3dsmaxhttps://www.autodesk.com.cn/products/3ds-max/free-trialpacker-iohttps://www.uv-packer.com/HDR 貼圖地址…

P8651 [藍橋杯 2017 省 B] 日期問題--注意日期問題中2月的天數 / if是否應該連用

P8651 [P8651 [藍橋杯 2017 省 B] 日期問題--注意日期問題中2月的天數 / if是否應該連用 題目 分析代碼 題目 分析 代碼中巧妙的用到3重循環,完美的解決了輸出的順序問題【題目要求從小到大】 需要注意的是2月的值,在不同的年份中應該更新2月的值 還有…

android 橫豎屏適配工作總結

1、創建一個橫屏文件夾,復制一份豎屏的布局。然后修改適配橫屏。只要布局id都有,其他想怎么改就怎么修改。 2、最好使用kotlin語言編寫和使用viewBinding綁定控件,可以使用?.判空控件是否存在,不至于缺少這個控件時候直接崩潰。 …

VS2022遠程調試Ubuntu中的C++程序

前言 最近想基于星火大模型的SDK開發第一些應用。但是,發現星火的SDK當中Linux版本的比較豐富,Windows 版本支持的比較少。但是,從調試的IDE而言,Visual Studio又是最方便的。所以,考慮采用Visual Studio Ubuntu的形式…

VS Code(Cursor)遠程開發調試教程(超詳細)

前言 📢 聲明:本文配置及開發方法同樣適合Cursor !! 在開始之前,你需要準備以下東西: 本地電腦: 安裝好 VS Code(Windows、Mac 或 Linux 都可以)。 官網下載&#xff0c…

【C++】類與對象:深入理解默認成員函數

類與對象:深入理解默認成員函數 引言1、默認成員函數概述2、構造函數與析構函數2.1 默認構造函數2.2 析構函數 3、拷貝控制成員3.1 拷貝構造函數3.2 賦值運算符重載 4、移動語義(C11)4.1 移動構造函數4.2 移動賦值運算符 5、三五法則與最佳實…

QT實現計算器

1:在注冊登錄的練習里面, 追加一個QListWidget 項目列表 要求:點擊注冊之后,將賬號顯示到 listWidget上面去 以及,在listWidget中雙擊某個賬號的時候,將該賬號刪除 Widget.h #ifndef WIDGET_H #define…

算法進階——二分

二分法: 一種高效查找方法,將問題搜索范圍一分為二,迭代地縮小范圍,直到找到目標。 二分法適用于有序的數據集合。 常見的二分類型有: 整數二分 浮點二分 二分答案 二分解題步驟: 1.研究并發現數據…

Kotlin函數式編程與Lambda表達式

Kotlin函數式編程與Lambda表達式 一、函數式編程基礎 1.1 什么是函數式編程 函數式編程是一種編程范式,它將計算過程視為數學函數的求值,強調使用不可變數據和純函數。在Kotlin中,函數式編程的特性讓我們能夠寫出更簡潔、更易維護的代碼。…

Java 并行流(parallelStream)詳解

目錄 1. 什么是 parallelStream?2. parallelStream 的優勢3. parallelStream 的使用3.1 基本使用3.2 計算總和示例3.3 結合groupingByConcurrent實現線程安全的分組操作 4. parallelStream 的注意事項4.1 適用場景4.2 并行流的局限性 5. 控制并行流線程數6. 總結 1.…

Ubuntu 20.04下配置VSCode以支持OpenCV庫開發

Ubuntu 20.04下配置VSCode以支持OpenCV庫開發 1. 安裝OpenCV庫安裝OpenCV(推薦使用APT安裝)或者從源碼安裝OpenCV(可選) 2. 安裝VSCode的C擴展3. 配置c_cpp_properties.json4. 編寫代碼并測試5. 配置tasks.json(編譯Op…

io學習----->標準io

思維導圖: 一.io的作用 io是實現對文件的操作,把運行結果存到文件中,讀取文件的數據,方便后期查詢。 二.io的概念 io是指系統 和外部設備或用戶之間的數據交互 I:input 表示數據從外部設備輸入到內存中; O:output…