提问于:
浏览数:
1878
## 编译环境
操作系统
* [×] Windows 7/8/10
* [ ] macOS
* [×] Linux
`若需勾选,请把[ ]改成[x]`
Tex发行版
* [×] TexLive `2020`
* [ ] MikTeX `版本号`
* [ ] CTeX
`若需勾选,请把[ ]改成[x]`
## 我的问题
需要每页不同的页脚,类似于每页页脚显示一句名人名言。
之前使用了夜神的方法。
https://github.com/xiaoleeza/fancyheading/blob/master/fancyheading.tex
但是这个需要每句话前面加序号。
```
{0}{Guilty consciences make men cowards.}
{1}{做贼心虚。}
{2}{Honesty is the best policy.}
{3}{做人诚信为本。}
{4}{Come what may, heaven won't fall.}
{5}{做你的吧,天塌不下来。}
```
我后来找到了一个不需要加序号的方法,但是因为硬盘损坏丢失资料了,找不到了,所以在这里问问万能的大神们,怎么才能不需要加前面的序号方便我调整每页显示的顺序?
1 回答
1
`\setwisdom[分隔符]{名言列表}`和`\addwisdom[分隔符]{名言列表}`设置名言列表
```tex
\documentclass{ctexart}
\usepackage{fancyhdr}
\usepackage{xparse}
\usepackage{xcolor}
\ExplSyntaxOn
\seq_new:N \g__wisdom_seq
\int_new:N \g__wisdom_idx_int
\int_gzero:N \g__wisdom_idx_int
\msg_new:nnn { wisdom } { invalid } { Invalid~index! }
\NewDocumentCommand \setwisdom { O{\\} m }
{
\set_wisdom:nn { #1 } { #2 }
}
\NewDocumentCommand \addwisdom { O{\\} m }
{
\add_wisdom:nn { #1 } { #2 }
}
\NewDocumentCommand \usewisdom { o }
{
\IfValueTF { #1 }
{
\int_compare:nTF
{ 1 <= #1 <= \seq_count:N \g__wisdom_seq }
{ \seq_item:Nn \g__wisdom_seq { #1 } }
{ \msg_error:nn { wisdom } { invalid } }
}
{ \use_wisdom: }
}
\cs_new_protected:Nn \set_wisdom:nn
{
\seq_gclear:N \g__wisdom_seq
\seq_gset_split:Nnn \g__wisdom_seq { #1 } { #2 }
}
\cs_new_protected:Nn \add_wisdom:nn
{
\seq_set_split:Nnn \l_tmpa_seq { #1 } { #2 }
\seq_gconcat:NNN \g__wisdom_seq \g__wisdom_seq \l_tmpa_seq
}
\cs_new_protected:Nn \use_wisdom:
{
\int_compare:nTF
{ \g__wisdom_idx_int = \seq_count:N \g__wisdom_seq }
{ \int_gzero:N \g__wisdom_idx_int }
{ \int_gincr:N \g__wisdom_idx_int }
\seq_item:Nn \g__wisdom_seq { \g__wisdom_idx_int }
}
\ExplSyntaxOff
\fancyhf{}
\renewcommand\headrulewidth{0pt}
\pagestyle{fancy}
\fancyfoot[C]{\itshape\color{teal}\usewisdom}
\setwisdom{
Guilty consciences make men cowards.\\
做贼心虚。\\
Honesty is the best policy.\\
做人诚信为本。
}
\addwisdom{
Come what may, heaven won't fall.\\
做你的吧,天塌不下来。
}
\begin{document}
abc
\newpage
abc
\newpage
abc
\newpage
abc
\end{document}
```
作者追问:2020-09-24 09:04
十分感谢大佬的解答,测试过程中发现一句名言无法手动换行,\par或者空行均报错,可否解决?
作者追问:2020-09-24 09:11
已解决,我把识别一句的标记修改即可。感谢大佬解答!
-
十分感谢大佬耐心解答!写了这么多的代码! – 2020-09-24 09:12 回复
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。