我目前有一个包含许多不同软件包的文档,它们似乎无法协同工作:
\usepackage{marvosym}
\usepackage{textcomp}
\usepackage{dsfont}
\usepackage{esint}
%\usepackage{gensymb} <- excluded due to error
%\usepackage{wasysym} <- excluded due to error
%\usepackage{tipa} <- excluded due to error
但是,我想在文档中使用这些符号(大多数只使用一次)。
我当前的方法是生成仅带有一个符号的PDF:
\documentclass[varwidth=true, border=2pt]{standalone}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
%Additional package
\usepackage{ wasysym }
%document
\begin{document}$\Bowtie$
\end{document}
然后将其包括
\includegraphics[height=12.3pt, keepaspectratio]{symbols/Bowtie.pdf}
然而,我觉得这可能会改变符号的大小及其相对于基线的相对位置(例如度数符号)。
有没有更好的方法可以同时使用这些软件包?(对于列出的软件包)顺序是否会影响我是否可以编译它?
更具体
当我包括时,\usepackage{wasysm}
我得到:
! LaTeX Error: Command \diameter already defined.
Or name \end... illegal, see p.192 of the manual.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.4 \newcommand{\diameter}{20}
我不知道该怎么解决这个问题。我试过了savesym
:
\usepackage{savesym}
\savesymbol{diameter}
\usepackage{wasysym}
但这并没有任何效果。
平均能量损失
这个例子并不是那么简单...我正在努力使它变得更小。
\documentclass[a4paper,landscape]{scrartcl}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{relsize} % mathlarger
\allowdisplaybreaks % allow align enviornment to break
\usepackage{siunitx}
\sisetup{per-mode=fraction}
\DeclareSIUnit\pixel{px}
\usepackage{subfig} % multiple figures in one
\usepackage{pgfplots}
\usepackage{tikz}
\usetikzlibrary{shapes, calc, shapes, arrows}
\usepackage{ntheorem}
\usepackage[raiselinks=true,
bookmarks=true,
bookmarksopenlevel=1,
bookmarksopen=true,
bookmarksnumbered=true,
hyperindex=true,
plainpages=false,
pdfpagelabels=true,
pdfborder={0 0 0.5},
colorlinks=false,
linkbordercolor={0 0.61 0.50},
citebordercolor={0 0.61 0.50}]{hyperref} %{0.57 0.74 0.57}
\usepackage[nameinlink,noabbrev]{cleveref} % has to be after hyperref, ntheorem, amsthm
\usepackage{multicol}
\usepackage{mathrsfs}
\usepackage{cmll}
\usepackage{stmaryrd}
\usepackage{skull}
\usepackage{longtable}
% Packages for symbols
\usepackage{upgreek}
\usepackage{marvosym}
\usepackage{textcomp}
\usepackage{dsfont}
\usepackage{esint}
\usepackage{gensymb}
\usepackage{wasysym}
\usepackage{tipa}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Begin document %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
Here are many symbols:
\begin{itemize}
\item \Bat from marvosym,
\item \textblank from textcomp,
\item $\mathds{1}$ from dsfont,
\item $\dotsint$ from esint,
\item $\celsius$ from gensymb
\item $\diameter$ from wasysym,
\end{itemize}
\end{document}
错误:
LaTeX Font Warning: Font shape `TS1/aer/m/n' undefined
(Font) using `TS1/cmr/m/n' instead on input line 82.
(/usr/local/texlive/2014/texmf-dist/tex/latex/marvosym/umvs.fd)
! LaTeX Error: Too many math alphabets used in version normal.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.88 \item $\mathds{1}
$ from dsfont,
答案1
如果您只需要\Bowtie
from wasysym
,那么您可以通过查看包中所做的操作来定义它:
\def\Bowtie{\mbox{\wasyfamily\char49}}
所以你只需要知道\wasyfamily
:
\def\wasyfamily{\fontencoding{U}\fontfamily{wasy}\selectfont}
wasysym
因此,您可以通过在文档中执行以下操作来避免加载:
% a command to access the wasysym font
\newcommand{\moosewasy}{\fontencoding{U}\fontfamily{wasy}\selectfont}
% here the symbols you need from wasysym
\newcommand{\Bowtie}{\mbox{\moosewasy\symbol{49}}}
(使用\symbol{...}
比\char...
这样做更好,这可能会带来意外)。
您可以对来自其他包的符号执行类似的操作,例如marvosym
。
例如,无需加载包即可定义\Stopsign
from :marvosym
% a command to access the marvosym font
\newcommand{\moosemarvo}{\usefont{U}{mvs}{m}{n}}
% here the symbols you need from marvosym
\newcommand{\Stopsign}{\mbox{\moosemarvo\symbol{33}}}
tipa
如果不加载包,IPA 符号的定义会复杂得多。我会避免使用gensymb
;无论如何,它的符号在其他地方都可用。
如何找到这些数字?
Martin Scharrer 的texdef
脚本对于查找符号的定义方式非常有用。在终端窗口中执行
texdef -t latex -p wasysym Bowtie
你就会得到答案
\Bowtie:
macro:->\mbox {\wasyfamily \char 49}
然后
texdef -t latex -p wasysym wasyfamily
印刷
\wasyfamily:
macro:->\fontencoding {U}\fontfamily {wasy}\selectfont
因为\Stopsign
它很相似
> texdef -t latex -p marvosym Stopsign
\Stopsign:
\long macro:->\mvchr {33}
然后
> texdef -t latex -p marvosym mvchr
\mvchr:
\long macro:#1->{\mvs \char #1}
最后
> texdef -t latex -p marvosym mvs
\mvs:
\long macro:->\fontfamily {mvs}\fontencoding {U}\fontseries {m}\fontshape {n}\selectfont
我将其转换为更好的\usefont{U}{mvs}{m}{n}