请提供 MWE
(最小工作示例)。一般情况都是能正常编译的。
请提供 MWE
(最小工作示例)。一般情况都是能正常编译的。
这完全是字体的问题,如果使用 unicode-math
,换一个数学字体就行了,基本上都是 45° 的:
可以使用 texdoc unimath-symbols
打开查看。
不使用 unicode-math
,有些宏包提供 45° 的:
使用 texdoc symbols-a4
查看。
执行完 \item
时仍然是垂直模式,在这种情况下需要手动离开垂直模式,使用 \leavevmode
或 \mode_leave_vertical:
均可。
在每个 \item
后紧跟 \mode_leave_vertical:
:
\documentclass{article}
\usepackage{varwidth}
\usepackage{graphicx}
\usepackage{lipsum}
\begin{document}
\ExplSyntaxOn
\coffin_new:N \l_test_a_coffin
\coffin_new:N \l_test_b_coffin
\hcoffin_set:Nn \l_test_b_coffin
{
\begin{varwidth}{\hsize}
\lipsum[1]
\begin{itemize}
\item what~I~want
\end{itemize}
\end{varwidth}
}
\hcoffin_set:Nn \l_tmpa_coffin
{
\begin{varwidth}{\hsize}
\includegraphics[width = 2cm]{example-image-a}
\end{varwidth}
}
\coffin_join:NnnNnnnn
\l_test_b_coffin { b } { r }
\l_tmpa_coffin { t } { r }
{ 0pt } { 0pt }
\begin{enumerate}
\item \mode_leave_vertical: % 加上这个
\coffin_typeset:Nnnnn
\l_test_b_coffin { t } { l }
{ 0pt } { 0pt }
\item \mode_leave_vertical: % 加上这个
\hcoffin_set:Nn \l_test_a_coffin
{
\begin{varwidth}{\hsize}
\lipsum[1]
\begin{itemize}
\item what~I~don't~want
\end{itemize}
\end{varwidth}
}
\hcoffin_set:Nn \l_tmpa_coffin
{
\begin{varwidth}{\hsize}
\includegraphics[width = 2cm]{example-image-a}
\end{varwidth}
}
\coffin_join:NnnNnnnn
\l_test_a_coffin { b } { r }
\l_tmpa_coffin { t } { r }
{ 0pt } { 0pt }
\coffin_typeset:Nnnnn
\l_test_a_coffin { t } { l }
{ 0pt } { 0pt }
\end{enumerate}
\ExplSyntaxOff
\end{document}
另外再多说一句,由于 coffin
仍然是一个盒子,这意味着它不可断页。
解决办法有很多,如
fancyhdr
宏包,设置页眉;everyshi
宏包,将其置于背景中;shipout
钩子;current page
node;这里给出第3个办法的实现:
% !TEX program=xelatex
\documentclass{ctexart}
\usepackage[a4paper,hmargin=2.4cm,vmargin=2cm]{geometry}
\usepackage{array,multirow}
\begin{document}
\AddToHookNext{shipout/background}{\put(2.4cm,-3cm){%
\makebox[\textwidth]{\heiti 编号:\hfill
\begin{tabular}[c]{|c|c|c|}\hline
\multirow{2}{1em}{类\\ 别} & 全日制教育硕士 & \hphantom{H} \\ \cline{2-3}
& 非全日制教育硕士 & \\ \hline
\end{tabular}}
}}
\thispagestyle{empty}
\leavevmode
\vfill
{\centering\zihao{2}\heiti 学位论文\par}
\vspace{1cm}
{\heiti 题目:}
\vspace{1cm}
\begin{center}
{\heiti
\renewcommand\arraystretch{1.5}%
\newcommand*\fixedbox[2][3cm]{%
\begingroup
\def\CJKglue{\hskip 0pt plus 2filll minus 1filll}%
\makebox[#1][l]{#2}%
\endgroup}
\newcommand*\infobox{\kern-5cm\makebox[5cm]}
\begin{tabular}{c@{:}>{\rule[-2pt]{5cm}{.4pt}}c}
\fixedbox{专业教学部} & \\
\fixedbox{专业名称} & \infobox{教育学} \\
\fixedbox{指导教师} & \\
\fixedbox{研究生} & \\
\fixedbox{提交时间} & \\
\end{tabular}}
\end{center}
\vspace{2cm}
{\centering\heiti 研究生院\quad 制\par}
\vspace{1cm}
\end{document}
在 \the<section>
后加一个 *
即可。
具体的,类似于:
\expandafter\def\expandafter\thesection\expandafter{\thesection*}
这里使用 \expandafter
是为了展开 \thesection
一次。
当然使用
\let\old@thesection\thesection
\def\thesection{\old@thesection*}
也可以。不过在使用之后必须立刻恢复 \thesection
的定义。
按照这个思路,可以写一个通用的宏 \starthis
\NewDocumentCommand \starthis { s m s o +m }
{
\group_begin:
\exp_args:Nnf \cs_set:cpn { the \cs_to_str:N #2 }
{
\exp_after:wN \exp_after:wN \exp_after:wN
\exp_stop_f: \cs:w the \cs_to_str:N #2 \cs_end: *
}
\IfBooleanT {#1}
{
\exp_args:Nnf \cs_set:cpn { CTEXthe \cs_to_str:N #2 }
{
\exp_after:wN \exp_after:wN \exp_after:wN
\exp_stop_f: \cs:w CTEXthe \cs_to_str:N #2 \cs_end: *
}
}
\IfBooleanTF {#3}
{ \IfValueTF {#4} { #2 * [#4] } { #2 * } }
{ \IfValueTF {#4} { #2 [#4] } { #2 } }
{#5}
\group_end:
}
\ExplSyntaxOff
使用时只需
\starthis\chapter{章}
\starthis*\chapter{章}
\starthis\chapter[张]{章}
\starthis\section{节}
\starthis\subsection{小节}
带 *
的还会重定义 \CTEXthe<section>
,以使得 \CTEXthe<section>
也有效。
对于完整的 \starthis\<section>*[...]{...}
也是支持的。
完整示例:
\documentclass{ctexart}
\usepackage{zhlipsum}
\usepackage[colorlinks]{hyperref}
\ExplSyntaxOn
\NewDocumentCommand \starthis { s m s o +m }
{
\group_begin:
\exp_args:Nnf \cs_set:cpn { the \cs_to_str:N #2 }
{
\exp_after:wN \exp_after:wN \exp_after:wN
\exp_stop_f: \cs:w the \cs_to_str:N #2 \cs_end: \,*
}
\IfBooleanT {#1}
{
\exp_args:Nnf \cs_set:cpn { CTEXthe \cs_to_str:N #2 }
{
\exp_after:wN \exp_after:wN \exp_after:wN
\exp_stop_f: \cs:w CTEXthe \cs_to_str:N #2 \cs_end: \,*
}
}
\IfBooleanTF {#3}
{ \IfValueTF {#4} { #2 * [#4] } { #2 * } }
{ \IfValueTF {#4} { #2 [#4] } { #2 } }
{#5}
\group_end:
}
\ExplSyntaxOff
\begin{document}
\tableofcontents
\section{章一}
\begingroup
\expandafter\def\expandafter\thesubsection\expandafter{\thesubsection\,*}
\subsection{章一一}
\endgroup
\zhlipsum[1-2][name=zhufu]
\subsection{章一二}
\zhlipsum[4-6][name=zhufu]
\starthis\subsection{章一三}
\zhlipsum[7-9][name=zhufu]
\starthis\section{章二}
\subsection{章二一}
\zhlipsum[1-3][name=nanshanjing]
\starthis\subsection[章两两]{章二二}
\zhlipsum[4-7][name=nanshanjing]
\end{document}
有一个 tableof
宏包,不知道是不是你想要的。效果如下:
多 tag 也是支持的。
如果只是要在标题旁边标记tag,那应该由 titlesec
或 ctexheading
宏包来做。
附上代码:
\documentclass{article}
\usepackage{tableof}
\usepackage{lipsum}
\begin{document}
\tableofcontents
\section*{Tagged with `\texttt{sec1}'}
\tableof{sec1}
\section*{Tagged with `\texttt{subsec1}'}
\tableof{subsec1}
\section*{Tagged with `\texttt{subsec2}'}
\tableof{subsec2}
\toftagstart{sec1}
\section{lipsum 1}
\toftagthis{subsec1}
\subsection{lipsum 1.1}
\lipsum[1]
\toftagthis{subsec2}
\subsection{lipsum 1.2}
\lipsum[1]
\toftagstop{sec1}
\toftagstart{sec2}
\section{lipsum 2}
\toftagthis{subsec1}
\subsection{lipsum 2.1}
\lipsum[2]
\toftagthis{subsec2}
\subsection{lipsum 2.2}
\lipsum[2]
\toftagstop{sec2}
\toftagstart{sec3}
\section{lipsum 3}
\toftagthis{subsec1}
\subsection{lipsum 3.1}
\lipsum[3]
\toftagthis{subsec2}
\subsection{lipsum 3.2}
\lipsum[3]
\toftagstop{sec3}
\toftagstart{sec4}
\section{lipsum 4}
\toftagthis{subsec1}
\subsection{lipsum 4.1}
\lipsum[4]
\toftagthis{subsec2}
\subsection{lipsum 4.2}
\lipsum[4]
\toftagstop{sec4}
\end{document}
\documentclass{standalone}
\usepackage{forest}
\begin{document}
\forestset{
declare dimen register=itemize folder indent,
itemize folder indent=.6em,
itemize rect/.style={tikz+={\fill ([xshift=-.9em,yshift=-2pt].child anchor) circle(1pt);}},
itemize folder/.style={
parent anchor=-children last,
anchor=parent first,
calign=child,
calign primary child=1,
for descendants={itemize rect},
for children={
child anchor=parent,
anchor=parent first,
edge={rotate/.option=!parent.grow},
edge path={
\noexpand\path[\forestoption{edge}]([xshift=\forestregister{itemize folder indent}]!u.parent anchor) |- ([yshift=-2pt].child anchor)\forestoption{edge label};
},
},
after packing node={
if n children=0{}{
tempdiml=l_sep()-l("!1"),
tempdims={-abs(max_s("","")-min_s("",""))-s_sep()},
for children={
l+=tempdiml,
s+=tempdims()*(reversed()-0.5)*2,
},
},
},
}
}
\begin{forest}
for root={itemize folder indent=.8em},
for tree={grow'=0,itemize folder,font=\ttfamily,inner ysep=0pt,l sep=1.7em}
[Baby Linear Functional analysis
[normed space
[$L^p$ space]
[Banach fixed point theorem]
[Hahn-Banach theorem
[separation of convex sets]
[weak convergence/dual operator,inner ysep=-2.5pt]
[Banach-Mazur theorem]
[Banach-Alaoglu-Bourbaki Theorem]
]
[Baire Category theorem
[Uniform boundedness principle]
[Open mapping theorem]
[Closed graph theorem]
]
]
[Hilbert space
[projections]
[Riesz representation]
[Fourier series]
[Lax-Milgram theorem]
[Self adjoint operators
[Eigenvalue problem]
[Spectral theorem]
]
]
]
\end{forest}
\end{document}
间距自己调吧。
在 xelatex 下,xeCJK
宏包有一个 CheckSingle
选项用以控制是否检查段末的孤字。
\documentclass[zihao=-4]{ctexart}
% 480bp = 40*12bp % 每行40字
\usepackage[textwidth=480bp]{geometry}
\begin{document}
\noindent
一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十
\medskip
一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九。%十
\xeCJKsetup{CheckSingle=true}
一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九。%十
\end{document}
可以看到使用 CheckSingle
的不同之处。“只有在段末的最后一个字是 CJK 文字或者标点符号,并且倒数第二和第三个字都是文字才能正确处理”。
对于单句在一个页面,可以使用 \enlargethispage{<dim>}
暂时扩大该页的高度。如
文字
\enlargethispage{12bp}
如果只是想得到 title、author 等信息,可以
\def\recordinfo#1{\gdef\recordedinfo{#1}#1}
然后使用
\recordinfo{%
\title{...}%
\author{...}%
\date{...}%
}
这样就把它们保存到了 \recordedinfo
之中,\maketitle
同样可用。
实际上,标准类文档中 title 等信息被保存到了 \@title
、\@author
、\@date
之中,在 \maketitle
之前可以使用它们,如果你用的文档类没有重定义 \title
等命令的话。
第一个例子中,\@title
就是
The Triangulation of Titling Data in Non-Linear Gaussian Fashion via $\rho$ Series\thanks{No procrastination}
当然也可以使用 regexpatch
宏包的 \xpretocmd
将信息保存到自己的命令中
% \usepackage{regexpatch} % 或者\usepackage{xpatch}
\xpretocmd\title{\gdef\titlesaved{#1}}{}{}
则 \titlesaved
中也会保存相同的标题信息。
至于它们的显示与否和显示顺序,这是由 \maketitle
或类似的命令来完成的。
可以使用 \meaning\maketitle
(或者 \show\maketitle
)查看其定义,在标准类文档中是由 \@maketitle
完成的,它决定了标题信息的输出顺序。
这些标题信息在每个文档类中都不一样,而且有些文档类不只有 title、author、date 信息,要设计一个通用的命令几乎是不可能的,只能靠人工查找,当然这还不如直接排版出来,再记住它们的顺序。
可能是使用了 fancyvrb
宏包的 \DefineShortVerb
命令将 |
定义为了 verb 命令。
我使用这种方式复现了类似的错误。
这样的话可以将 |
的类代码改为 12:
\catcode`\|=12
... 公式 ...
另外你可以使用
\the\catcode`\|
查看 |
的类代码,如果其值是 13 则应该可以通过上述方式修复。
如果还不能解决,请提供 MWE。
看看这个 https://www.zhihu.com/question/501741864/answer/2244093701
原理是相同的,只要把它的 sidenote 计数器改为你的计数器即可。
使用 \phantomsection
、\addcontentsline
。
\documentclass{book}
\usepackage[colorlinks]{hyperref}
\usepackage{bookmark}
\usepackage{lipsum}
\begin{document}
% \hypersetup{pdfview=Fit}
\phantomsection
\addcontentsline{toc}{chapter}{Page One}
\begin{center}
\begin{minipage}{.7\textwidth}
{\hfill\bfseries\large Abstract\hfill}
\medskip
\parindent=2em
\small
\lipsum[11-12]
\end{minipage}
\end{center}
\cleardoublepage
% \hypersetup{pdfview=XYZ}
\phantomsection
\addcontentsline{toc}{chapter}{Contents}
\tableofcontents
\chapter{Chapter One}
\lipsum[1-3]
\section{Section One.One}
\lipsum[4-9]
\section{Section One.Two}
\chapter{Chapter Two}
\lipsum[10-13]
\end{document}
cmap是pdftex特有的功能,其它编译器不可用。
你之前那个问题是pdftex下,使用cjk支持中文出现的错误,不是标准行为。
问 使用include 功能时,编译错误