提问于:
浏览数:
2423
## 编译环境
操作系统
* [x] Windows 7/8/10
* [ ] macOS
* [ ] Linux
`若需勾选,请把[ ]改成[x]`
Tex发行版
* [x] TexLive `2020`
* [ ] MikTeX `版本号`
* [ ] CTeX
`若需勾选,请把[ ]改成[x]`
## 我的问题
如题,后记中主要是用到了两个宏包——gezhu(割注)和 guwen,后者是胡老师自己编写的 。后记源代码如下
```
% !Mode:: "TeX:UTF-8:Hard"
\documentclass{book}
\usepackage[paperwidth=260mm,paperheight=185mm,text={217.2mm,146.35mm},left=21mm,bottom=29.5mm]{geometry}
\usepackage{guwen,gezhu}
\setCJKmainfont[Vertical=RotatedGlyphs,CJKShape=Traditional]{AdobeFangsongStd-Regular} % 字体 AdobeFangsongStd-Regular.otf 需自行下载。
\setCJKsansfont[Vertical=RotatedGlyphs,CJKShape=Traditional]{MSungHK-Bold} % 字体 MSungHK-Bold.otf 需自行下载。
\setcounter{page}{499}
\newcommand{\guwen}{\raisebox{-3pt}{\LaTeXe} 完全學習手冊(第二版)}
%\everygezhu{\footnotesize}
\begin{document}
\begin{withgezhu}
\biaoti{後\quad 記\nianyue{壬辰年九月}}{胡偉}
本书在编写时既想面面俱到又希望简短精炼、不致连篇累牍使人望而却步。
书中介绍的宏包都是在论文写作时最常用的。但随着老宏包的不断改进、新宏包的不断涌现、
这些最常用的宏包已不见得是使用最方便、功能最强大的、其中一些宏包、尽管我们还在使用、
已逐渐并不断地被其他宏包所超越所替代、由于篇幅所限、这些后起之秀只能另外著文介绍。
书中对各种宏包的介绍都是选其主要功能、而有些宏包的辅助功能甚至连宏包本身的说明文件都未必说得很清楚。
例如某个宏包命令只是一笔带过、甚至都没提到、只有当打开该宏包文件时才发现还有这么一条很有用的命令。
所以说为了能够更准确地使用宏包、更充分地发挥宏包的效用、读者还需要详细阅读宏包说明以及宏包文件。
很多人抱怨命令太多很难记忆、急用时又找不到或找不全。为此本书尽量将系统命令、环境命令、符号命令和宏包命令分门别类集中列表说明、
比如长度命令、表格命令等。所以只要通读一遍本书、了解大致内容就可以了、
在论文写作时、需要哪方面的命令就去查阅相关的列表和说明、就如同查字典。
如果是初学者、只要看完前五章就可以实用了、其他各章可根据需要随时查阅、它们之间没有必然联系。
书到用时方恨少、有些读者可能会觉得意犹未尽、例如图形绘制、宏包编写等书中都未深入涉及、这方面的内容打算今后有机会另写专文介绍。
本书只能陪您到此、以后就看您的了。
\gezhu{本篇后记是按照中华书局一九六二年出版的《古文观止》一书的版式编写、
採用 \raisebox{-3pt}{XeLaTeX} 编译、其源文件收录于随书附带的资料光盘。}
\end{withgezhu}
\end{document}
```
guwen 宏包代码如下
```
%% This is file `guwen.sty',
%% This package is in the public domain. It comes with no guarantees
%% and no reserved rights. You can use or modify this package at your
%% own risk.
%% Originally written by: Huwei
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{guwen}
\RequirePackage{ifthen}
\RequirePackage{xltxtra}
\RequirePackage{ctex}
\newbox\@fancybox
\@ifundefined{@tempdimc}{\newdimen\@tempdimc}{}
\fboxrule=2pt
\def\shadowbox{\@shadowbox}
\def\@shadowbox#1{%
\setbox\@fancybox\hbox{\fbox{#1}}%
\leavevmode\vbox{%
\dimen@=0pt
\advance\dimen@ .5\fboxrule
\hbox{\copy \@fancybox\kern-.5\fboxrule \hbox{}}%
\vskip-\dimen@
\vbox{\hrule \@width\wd\@fancybox \@height\dimen@}}
\ifthenelse{\isodd{\value{page}}}{\hspace{-198mm}\raisebox{152.0mm}{\guwen\hspace{110mm}\CTEXdigits{\Numr}{\thepage}\Numr}}{\hspace{-198mm}\raisebox{-3mm}{\guwen\hspace{110mm}\CTEXdigits{\Numl}{\thepage}\Numl}}
\special{pdf:put@pages<>}}
\def\fb@outputpage{%
\begingroup
\small %\normalsize
\baselineskip\z@
\lineskip\z@
\let\par\@@par
\ifx\the@fancypage\@empty\else
\setbox\@outputbox\hbox{\the@fancypage{\box\@outputbox}}%
\fi
\setbox\@outputbox\vbox{%
\@tempdima=\wd\@outputbox
\setbox\@tempboxa=\hbox to\@tempdima{%
\@thehead}%
\ht\@tempboxa\headheight
\dp\@tempboxa\z@
\box\@tempboxa
\vskip\headsep
\box\@outputbox
\baselineskip\footskip
\hbox to\@tempdima{%
\@thefoot}}
\setbox\@outputbox\vbox{%
\vskip\topmargin
\moveright\@themargin\box\@outputbox}%
\let\protect\noexpand
\shipout\box\@outputbox
\endgroup
\stepcounter{page}}
\def\the@fancypage{}
\def\the@@fancypage{}
\def\this@fancypage{}
\def\fancypage#1#2{%
\def\the@fancypage{#1}%
\def\the@@fancypage{#2}%
\def\@outputpage{\fb@outputpage}}
%% 内框开始
\def\@nonumvgrid(#1,#2)#3#4#5{%
\multiput(#1,#2)(617,0){2}{\line(0,1){#5}}}
\def\@nonumhgrid(#1,#2)#3#4#5{%
\multiput(#1,#2)(0,#3){#4}{\line(1,0){#5}}}
\newcommand\kuangxian[1][10]{\leavevmode\@grid{#1}}
\def\@grid#1(#2,#3)#4{\@grid@i{#1}{#2}{#3}(}
\def\@grid@i#1#2#3(#4,#5){%
\@tempcnta=#4\relax
\divide\@tempcnta#1\relax
\advance\@tempcnta1\relax
{\thinlines\@nonumvgrid(#2,#3){#1}{\@tempcnta}{#5}
\@tempcnta#4\relax
\@tempcnta#5\relax
\divide\@tempcnta #1\relax
\advance\@tempcnta1\relax % 顶线
\thinlines\@nonumhgrid(#2,#3){#1}{\@tempcnta}{#4}%底线
\@tempcnta#5\relax
\divide\@tempcnta5\relax
\divide\@tempcnta#1\relax
\advance\@tempcnta1\relax}\ignorespaces}
%% 内框结束
\fancypage{\kuangxian[26](4.5,4.2)(617,416)%
\setlength{\fboxsep}{2pt}%
\shadowbox}{}
\renewcommand{\small}{\@setfontsize\small\@xpt\@xiipt}
\renewcommand{\normalsize}{\@setfontsize\Large\@xivpt{18}}
\leftskip=3mm\rightskip=3mm\fboxsep=0pt\topskip=-10pt
\parindent=0pt
\pagestyle{empty}
\newcommand{\biaoti}[2]{\noindent\hspace*{4em}{\sf\fontsize{15}{0pt}\selectfont #1 \hfill #2}\hspace*{4em}\\}
\newcommand{\nianyue}[1]{\,{\rm\footnotesize\raisebox{3pt}{#1}}}
\renewcommand{\baselinestretch}{1.445}
\endinput
%% END guwen.sty
```
结果编译后字体右倾90度
![](https://wenda.latexstudio.net/data/attach/200723/dw7uC1MF.png)
正常的结果应该是这样的
![](https://wenda.latexstudio.net/data/attach/200723/w9oBIBSc.png)
所以,具体是哪方面的原因,怎么解决?
2 回答
0
这个问题现在已经解决了,只需将 ```\setCJKmainfont``` 和 ```\setCJKsansfont``` 选项中的 ```Vertical=RotatedGlyphs``` 改成 ```RawFeature = {vertical:+vert}```就能输出正常的结果。但导致这个问题的具体原因现在还不清楚,有待进一步研究。
0
搬运一下 L 叔在电报群的回答:
> xeCJK 要竖排,首先字体要旋转,然后页面要旋转。
> 字体旋转,就是 vertical:+ 这样(好像是
> 页面旋转方案太多
作者追问:2020-07-25 17:42
原理是如此,但为何当年的参数 ```Vertical = RotatedGlyphs``` 现在却无效了,这才是问题的关键。
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。