Swit
Swit
LaTeX nubility!

注册于 4年前

回答
87
文章
0
关注者
4

\documentclass{article}
\usepackage{mtpro2}
\DeclareSymbolFont{largesymbols-cmex}{OMX}{cmex}{m}{n}
\DeclareMathSymbol{\intop}{\mathop}{largesymbols-cmex}{"52}
    \DeclareRobustCommand\int{\intop\nolimits}
\DeclareFontEncoding{LMX}{}{}
\DeclareFontSubstitution{LMX}{ntxexx}{m}{n}
\DeclareSymbolFont{largesymbols-newtxmath}{LMX}{ntxexx}{m}{n}
\DeclareMathDelimiter{\langle}{\mathopen}{symbols}{104}{largesymbols-newtxmath}{10}
\DeclareMathDelimiter{\rangle}{\mathclose}{symbols}{105}{largesymbols-newtxmath}{11}
\begin{document}

\[ \int \left\langle \frac{u}{|u|},\frac{v}{|v|}\right\rangle \alpha\xi\zeta\]

\end{document}

image.png

这个就是 TeX 中的一个特殊规则(见 TeXbook 204 页),在早些年代,计算机内存较小,这种定义方式可以节省一些字节量。

现在定义宏不推荐这种写法,能看明白就行。

pdftex 跑下面的代码:

\tracingmacros=1
\def\foo#1#2#{*#1,#2*}

\foo 1 2{}

\foo 1 {2}

\bye

在 log 文件中会看到:

\foo #1#2{->*#1,#2*{
#1<-1
#2<- 2

\foo #1#2{->*#1,#2*{
#1<-1
#2<- %%%注意这里有一个空格,自己测试一下

对于 \foo 1 2{}\foo 接收的第一个参数是 1,第二个参数为第一个参数与左花括号之间的所有 token,也就是空格符和 2;而对于 \foo 1 {2},第一个参数还是 1,而第二个参数只剩下一个空格符;再改一下,如果删掉 1 后面的空格符的话(即 \foo 1{2}),第二个参数就是空的。

我们可以通过这个特性定义带可选参数的宏,看看从 xcolor 里面节选的一段代码:

\documentclass{article}
\usepackage{xcolor}
\makeatletter
\def\testclr#1#{\@testclr{#1}}
\def\@testclr#1#2{{\fboxsep\z@\fbox{\colorbox#1{#2}{\phantom{XX}}}}}
\makeatother
\begin{document}

\testclr{red}
\testclr[rgb]{1,0,1}

\end{document}

\testclr 只有一个参数,且这个参数位于宏本身与左花括号之间,所以

  • 对于 \testclr{red}#1 为空,于是传给 \@testclr 的第一个参数为空,第二个参数为 red
  • 对于 \testclr[rgb]{1,0,0},第一个参数为 [rgb],第二个参数为 1,0,0,于是传给 \@testclr 的两个参数也一样

image.png

看这个,和你的需求一模一样

https://tex.stackexchange.com/questions/23432/how-to-create-my-own-math-operator-with-limits


看来光丢个链接还不行?

\documentclass{article}
\usepackage{amsmath}
\usepackage{graphicx}

\makeatletter
\DeclareRobustCommand\bigop[1]{%
  \mathop{\vphantom{\sum}\mathpalette\bigop@{#1}}\slimits@
}
\newcommand{\bigop@}[2]{%
  \vcenter{%
    \sbox\z@{$#1\sum$}%
    \hbox{\resizebox{\ifx#1\displaystyle.9\fi\dimexpr\ht\z@+\dp\z@}{!}{$\m@th#2$}}%
  }%
}
\makeatother

\newcommand{\bigK}{\DOTSB\bigop{\mathrm{K}}}

\begin{document}
\[
\bigK_{N=1}^n \frac{a_N}{b_N}
\quad
\textstyle
\bigK_{N=1}^n \frac{a_N}{b_N}
\quad
\scriptstyle
\bigK_{N=1}^n \frac{a_N}{b_N}
\quad
\scriptscriptstyle
\bigK_{N=1}^n \frac{a_N}{b_N}
\]
\end{document}

image.png

如果这是 LaTeX-Workshop 拓展的问题,请到其 Github issues 处提交问题报告。

\documentclass{article}
\usepackage{tikz}
\begin{document}

Hello \tikz[baseline=(char.base)] \node[circle,draw,inner sep=0pt] (char) {\#}; World

\end{document}

很多比赛都有模版,你不需要自己设置格式,只管填充内容就行

用 graphicx 包提供的 \scalebox:

\documentclass{article}
\usepackage{graphicx}
\begin{document}

$\Delta$\scalebox{0.8}[1]{$\Delta$}

\end{document}

我的理解是这样的,.meta:n.meta:nn 的作用都是通过一个键设置其它的键,区别在于后者还会设置路径。比如:

\keys_define:nn {module}
  {
    key .meta:n = 
    {
      key-a = #1,
      key-b = #1  
    }
  }

那么 key = value 就会同时设置 key-akey-b 的值为 value

你通过两种方式设置键其实是等价的,本质上都设置了同一个键,其全称为 module/subset/key-a

当使用

\keys_set:nn {module}
  {
    subset/key-a = value-a
  }

设置键时,会将键 module/subset/key-a 的值设置为 value-a,这当然没有问题。然而,当你按下面这样写时:

\keys_set:nn {module}
  {
    subset = { key-a = value-a }
  }

latex 会寻找键 module/subset,但这个键是不存在的,所以会报错。这时候,便可以用 .meta:nn 解决这个问题(注意我故意将键名取为 SUBSET 来表明这个名称不一定非要和 module/xxx 中的 xxx 保持一致):

\define_keys:nn {module}
  {
     SUBSET .meta:nn = { module / subset } { key-a = #1 }
  }

通过上面这段代码,我们定义一个键叫做 module/SUBSET,当给它赋值 value-a 时:

\keys_set:nn {module}
  {
    SUBSET = value-a
  }

就相当于在 module/subset 路径下设置 key-a 的值为 value-a,即键 module/subset/key-a 的值为 value-a

我们还可以继续改:

\keys_define:nn {module}
  {
    SUBSET .meta:nn {module/subset} {#1}
  }

这时便可以像你希望地那样设置值:

\keys_set:nn {module}
  {
    SUBSET = { key-a = value-a }
  }

key-a = value-a 作为整体传递给上面的 #1,效果还是设置键 module/subset/key-a 的值为 value-a

我也是刚接触不久这个键值系统,如果说的有问题,还请大家指出。

If you are using mac, just type

open `kpsewhich book.cls`

in the terminal to open the source file book.cls and you can search for any code snippets as you like.

  1. 根据手册,你需要设置文档类选项 \documentclass[sectrefs]{svmono}。一个实例代码如下

    \documentclass[sectrefs]{svmono}
    \usepackage{lipsum}
    \begin{document}
    
    \section{aaaaa}    
    \lipsum[1]
    \begin{thebibliography}{99}
      \bibitem{citation} test
    \end{thebibliography}
    
    \end{document}

    1.png

  2. 提问请给完整代码
  3. 代码请用代码块,过长代码请上传文件(别说自己不会传)

发布
问题