<我遇到了这样的问题,我是用了NotesTex。它生成的pdf文件右边和下边不能打印完整,我看NotesTex的模板用latex编译出来是ok的。但是我要输入中文字符所以用的是xelatex,ctex,不注释掉\pdfoutput=1就会报错。注释掉之后就会是这样,求助大家,应该怎么调?
附上代码:我的问题.zip




这是用latex正常情况!

2 回答2

2
这是一个 xetex 的 bug,已在代码库中修复。介绍见文章 https://zhuanlan.zhihu.com/p/108460962 。 原回答提供了「避免设置 [h|v]offset 为非零值」的绕过方法。 ------ notestex 宏包里使用了 ```tex \geometry{hoffset=-1in, voffset=-1in,} ``` 而 `hoffset` 和 `voffset` 在正常情况 [1] 下都应该为零值。xetex 的 `\pdflastxpos` 在 `\[h|v]offset` 非零时的行为与 pdftex 和 luatex 不同,导致了问题。 可复现问题的最小例子是 ```tex \documentclass{article} \usepackage[showframe]{geometry} \usepackage{marginnote} \geometry{hoffset=-1in, voffset=-1in} \begin{document} so\marginpar{right} that\marginnote{right}[10pt] \end{document} ``` 修复方式是,在加载 notestex 宏包后,添加 ```tex \geometry{hoffset=0pt, voffset=0pt, layouthoffset=-1in, layoutvoffset=-1in} ``` 这样,边注的不正常偏移就没了。 因为marginnote 和 sidenotes 宏包生成的边注都**不能浮动**,所以有时可能需要手动调整边注的纵向位置。 ```tex \marginnote{<text>}[<offset>] % or \sidenote[][<offset>]{<text>} ``` 其中 `<offset>` 是 tex dimension,例如 `50pt`(表示向下偏移 50pt)。 ------ [1] The LaTeX Companion, sec. 4.1 > The reference point can be shifted by redefining the lengths `\hoffset` and `\voffset`. By default, their values are zero. In general, the values of these parameters should **never** be changed.
  • 感谢坛友,我明白了! – 鬼隐 2020-02-21 20:30 回复
1
你的代码有点乱来…… ```tex \documentclass[12pt]{article} \usepackage[UTF8]{ctex} \usepackage{NotesTeX,lipsum} \usepackage{ifthen,ifxetex} \ifxetex \geometry{ hoffset=0in, voffset=0in, layouthoffset=-1in, layoutvoffset=0.5in, } \fi \title{\begin{center}{ \Huge \textit{Quantum Chemistry Notes} }\\ { {\itshape Szabo's } } \end{center} } \author{ Cunxi Gong\footnote{\href{hermit10032@163.com}{\textit{My Personal email}}} } \affiliation{ COC, Zhengzhou University\\ Institute of Theoretical Chemistry\\ } \emailAdd{11111} \begin{document} \flushbottom \maketitle \newpage \pagestyle{fancynotes} \part{Mathithical Review} \section{Linear Algebra}\label{sec:linear algebra} \subsection{Three-Dimensional Vector Algebra}\label{subsec:3d vector algebra} \begin{equation} a = \vec{e}_1 a_1+ \vec{e}_2 a_2+ \vec{e}_3 a_3=\sum_i^n \vec{e}_i a_i \label{1.1.1} \end{equation} 这里是一个三维空间的向量表示,它是完备的,基向量称为basis,任何三维空间的向量都可以用这个basis集合来表示,但是我们知道这个空间里面可以有很多的basis表示方法,也就是说,basis not unique! 一般来说,可以把一个向量投射到基向量上称为component,也就是说可以用一个列向量来表示一个向量! \[\mathbf{a}= \left(\begin{array}{r} a_1\\ a_2\\ a_3 \end{array}\right)\textit{in the basis}\{\vec{e}_i\} \] The scalaror dot product can be: \[\vec{a} \cdot \vec{b}=\sum_i \sum_j \vec{e}_i \cdot \vec{e}_j a_ib_j \] 对于 basis vector, 可以用 Kronecker delta symbol $\delta$ or 或者说 Dirac delta function 来表示。一般说这个有两个值,0, 1。i=j时,为1,其他为0. \[ \vec{e}_i \cdot \vec{e}_j = \delta_{ij} \] 对于这样的basis就叫作正交归一化,orthonormality 有了它之后\[\vec{e}_j \cdot\vec{a}=\sum_i\vec{e}_j\cdot\vec{e}_ia_i=\sum_i\delta_{ij}a_i=a_j \] 同样,可以重写\ref{1.1.1}为\[ \vec{a}=\sum_i \vec{e}_i\cdot\vec{e}_i\cdot=\overleftrightarrow{1}\cdot\vec{e}_j \] 在这里$\overleftrightarrow{1}$是并矢张量,unit dyadic。同时也 有 identity operator。 \[\hat{1}=\sum_i|a_i><a_i| \] \begin{definition} Operactor${L}$ 作用在一个向量上,把一个向量转化成另一个向量。 \[L\vec{a}=\vec{b} \] 这里算符可以说是线性(Linear) 所以可以说 \[\hat{L}(x\vec{a}+y\vec{b})=x\hat{L}\vec{a}+y\hat{L}\vec{b}\] 由于向量可以用basis表示且算符可以转化向量为新向量所以,可以写作 \[\hat{L}\vec{e}_i=\sum_{j=1}^3\vec{e}_j\mathbf O_{oj} \\ \mathbf{O_{ij}}=\left( \begin{array}{rrr} \mathbf O_{11}& \mathbf O_{21}&\mathbf O_{31}\\ \mathbf O_{21}& \mathbf O_{22}&\mathbf O_{32}\\ \mathbf O_{31}& \mathbf O_{32}&\mathbf O_{33} \end{array} \right)\] 我们说 \( \mathbf O \) 就是算符 \( \hat{L} \) 的矩阵表示 \end{definition} 如果 \( \mathbf{A} \) 和 \( \mathbf{B} \) 是算符 \( \hat{A} \) 和 \( \hat{B} \) 的矩阵表示,且 \( \hat{L}=\hat{A}\hat{B} \) 那么我们可以这么写: \begin{align}\hat{L}\vec{e}_j&=\sum_i\vec{e}_iC_{ij}\\ &=\hat{A}\hat{B}\vec{e}_j\\ &=\hat{A}\sum_k\vec{e}_k\mathbf B_{kj}\\ &=\sum_{ik}\vec{e}_i\mathbf A_{ik}\mathbf B_{kj} \end{align} \mn{我大概理解这几个式子, 算符作用向量$\vec{a}$生成向量$\vec{b}$,向量可以用基向量完备线性表出。 我理解张量是映射,或者说基向量转换。基向量转换需要列向量。$\mathbf C_{ij}$就是向量转置需要的矩阵。 现在一个算子是两个算子的乘积。$\mathbf A\quad \mathbf B\quad \vec e_{jj}$,算子从右到左作用,会有两个映射用矩阵相乘,它等同于单个算子的矩阵。 那么两个算子乘积的映射就可以用两个映射用矩阵乘积来表示 } so that \[\mathbf C_{ij}=\sum_k\mathbf A_{ik}\mathbf B_{kj}\] 所以说算符的乘积就是其所代表的矩阵的乘积 算符的作用顺序是至关重要的! 一般来说 \( \hat{A}\hat{B}\ne\hat{B}\hat{A} \), or \( AB\ne BA \) \begin{definition} \begin{align} commutator,\text{交换子}\\ [\hat{A},\hat{B}]&=\hat{A}\hat{B}-\hat{B}\hat{A}\\ [\mathbf A,\mathbf B]&=\mathbf A\mathbf B-\mathbf B\mathbf A\\ anticommutator,\text{反交换子}\\ \{\hat{A},\hat{B}\}&=\hat{A}\hat{B}+\hat{B}\hat{A} \{\mathbf A,\mathbf B\}&=\mathbf A\mathbf B+\mathbf B\mathbf A \end{align} \end{definition} \subsection{Matrix}\label{subsec:matrix} 不需要废话,直接开始。\\ 一般都是复元素的矩阵!\( M \) 个 \( \{a_i\} \) 的集合,\( \mathbf M \) 一般写作列,column matrix! \[\mathbf a=\left( \begin{array}{rrr} &\mathbf a_1\\ &\mathbf a_2\\ &\vdots\\ &\mathbf a_M \end{array}\right) \] 记 \( \mathbf{A} \) 是一个 \( N \times N \) 的矩阵 \end{document} ```
  • 感谢坛友 – 鬼隐 2020-02-21 22:15 回复

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。