关于中文竖排文本的三个问题

发布于 2022-04-24 19:42:42

各位大佬,现有如下代码

\documentclass{ctexart}
\usepackage{graphicx}
\setCJKmainfont{SimSun}
\setCJKfamilyfont{songvert}[RawFeature={vertical:+vert}]{SimSun}
\newcommand*\CJKmovesymbol[1]{\raise.7em\hbox{#1}}
\newcommand*\CJKmove{
\let\CJKsymbol\CJKmovesymbol
\let\CJKpunctsymbol\CJKsymbol}
\usepackage{varwidth}
\newcommand{\shupai}[1]{\rotatebox{-90}{\begin{varwidth}{\textwidth}
\CJKfamily{songvert}
\CJKmove
#1
\end{varwidth}
}}
\newcommand{\SHUPAI}[1]{\rotatebox{-90}{
\CJKfamily{songvert}
\CJKmove
#1
}}

\begin{document}
上文上文上文上文上文上文上文上文上文上文

\fbox{\shupai{文本框框\\测试}}

下文下文下文下文下文下文下文下文

\fbox{\SHUPAI{文本框框}}

测试测试测试测试测试测试测试测试测试测试测试测试
\end{document}

94359f6b7460a4043da58e68a89ff65.jpg
现在有三个问题与间距有关,(1)竖排文本与上下文的间距不一致,如何调整?
(2)见下图,标记2,3两处的文字与上下线条的间距不一致(估计是盒子的原因),如何调整?(3)见下图,标记1处如何缩小两行的间距?
45727fda5bd403098be935c1474ec76.jpg

查看更多

关注者
0
被浏览
259
雾月
雾月 2022-04-24

(1)插入垂直间距 -1em。(2)这是使用垂直字体导致的,不能正确计算盒子的宽度,根本原因是目前 xetex 没有垂直排版的能力,只能靠旋转来实现。要使用垂直排版,最好使用 upLaTeX、pLaTeX-ng,或 ConTeXt MKXL(LuaMetaTeX)。(3)修改 \lineskiplimit\lineskip

\documentclass{ctexart}
\usepackage{graphicx}
\setCJKmainfont{SimSun}
\setCJKfamilyfont{songvert}[RawFeature={vertical:+vert}]{SimSun}
\newcommand*\CJKmovesymbol[1]{\raise.7em\hbox{#1}}
\newcommand*\CJKmove{
\let\CJKsymbol\CJKmovesymbol
\let\CJKpunctsymbol\CJKsymbol}
\usepackage{varwidth}
\newcommand{\shupai}[1]{\rotatebox{-90}{%
\begin{varwidth}{\textwidth}
\CJKfamily{songvert}
\lineskip=-3pt
\lineskiplimit=1pt
\CJKmove
#1\end{varwidth}}}
\newcommand{\SHUPAI}[1]{\rotatebox{-90}{%
\CJKfamily{songvert}%
\CJKmove
#1}}

\begin{document}
上文上文上文上文上文上文上文上文上文上文

\vspace*{-1em}\fbox{\shupai{文本框框\\测试}}

下文下文下文下文下文下文下文下文

\vspace*{-1em}\fbox{\SHUPAI{文本框框}}

测试测试测试测试测试测试测试测试测试测试测试测试
\end{document}

image.png

1 个回答

撰写答案

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

发布
问题

分享
好友

手机
浏览

扫码手机浏览