如何在不直接使用符号的情况下,包含具有正确大小和相对位置的符号?

如何在不直接使用符号的情况下,包含具有正确大小和相对位置的符号?

我目前有一个包含许多不同软件包的文档,它们似乎无法协同工作:

\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

如果您只需要\Bowtiefrom 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

例如,无需加载包即可定义\Stopsignfrom :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}

相关内容